數的劃分 最長公共字首 有效的括號

2021-10-07 18:04:30 字數 1520 閱讀 5612

第一題

將整數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...