第一題
將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
;;;問有多少種不同的分法。 輸出乙個整數,即不同的分法。
int
splittheinteger
(int n,
int k)
解題思路
我門可以將數字n當成n個木棍,分給k個人,遞推公式是s(n,k)=s(n-1,m-1)+s(n-m,m);
出口為s(n,1)=1;
如果k大於n 則s(n,m)=0;
第二題
編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 「」。
示例 1:
輸入: [「flower」,「flow」,「flight」]
輸出: 「fl」
示例 2:
輸入: [「dog」,「racecar」,「car」]
輸出: 「」
解釋: 輸入不存在公共字首。
string longestcommonprefix
(vector
& strs)}if
(length ==0)
return s;
for(
int j =
0; j < length; j++)}
s += strs[l].at
(j);
}return s;
}
解題思路:暴力解法,沒啥好說的.
第三題
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」
輸出: true
示例 2:
輸入: 「(){}」
輸出: true
示例 3:
輸入: 「(]」
輸出: false
示例 4:
輸入: 「([)]」
輸出: false
示例 5:
輸入: 「」
輸出: true
在bool
isvalid
(string str)
'&& s.
top()==
'}if(s.
empty()
)return
true
;else
return
false
;}
解題思路:利用棧的先進後出的特點,將字串依次壓棧,再判斷棧頂元素與壓棧元素是否符合,不符合就繼續壓棧,符合則出棧,若最後棧裡面還有元素,則不匹配. 求最長公共字首的乙個思路
思路 以第乙個字串為標準,與第二個字串的第二個字元比,第三個字串的第三個字元比,如此類推下去,如果出現某個字串長度比當前拿來對比的字元的序號小,或者對應位置上的字元不相等,則直接返回當前的strs陣列,否則如果遍歷到最後乙個字串對應字元都相等,說明這是他們的公共字元,將其新增至strs。比如字元陣列...
」最長有效括號的長度「
題目 給定只包含括號字元 和 的字串,請找出最長的有效括號內子括號的長度。舉幾個例子如下 例如對於 最長的有效的括號中的子字串是 有效雙括號數1個,故它的長度為 2。再比如對於字串 其中最長的有效的括號中的子字串是 有效雙括號數2個,故它的長度為4。再比如對於 它的長度為6。換言之,便是有效雙括號 ...
求最長公共字首和字尾 基於KMP的next陣列
kmp演算法最主要的就是計算next演算法,但是我們知道next求的是當前字串之前的子字串的最大前字尾數,但是有的時候我們需要比較字串中前字尾最大數,比如 leetcode的shortest palindrome 就是基於kmp演算法求最短子字串。public static int longestp...