每日刷題 分割回文串II

2021-09-28 14:23:16 字數 708 閱讀 5694

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。

返回符合要求的最少分割次數。

示例:

輸入: 「aab」

輸出: 1

解釋: 進行一次分割就可將 s 分割成 [「aa」,「b」] 這樣兩個回文子串。

解法一:沿用分割會文串 的方法,將所有可能的結果列舉出來,然後選擇長度最小的即可。

親測,超時。

解法二:動態規劃。

這種題,首先要考慮的就是動態規劃。為什麼?假如給定 「aa」 的最小分割次數,則給定 「aab」 便是在 「aa」 的基礎上,觀察 『b』 與之前字串的關係來確定 「aab」 的最小分割次數。

即,我們可以把問題轉化為最優子結構之間的關係。

開闢向量 dp, 其中 dp[i] 儲存的是 s[0,…,i] 的最小切割次數。

遍歷字串,對於每個字元,從前向後檢查(第二重 for 迴圈)能否與之前的字串組成回文串,若能,則更新;否則,continue.

**:

class

solution

intmincut

(string s)

return dp.

back()

;}};

當然,上述**的執行時間到達了 o(n^3), 雖然 ac, 但有很大的優化空間。

如何優化?

中心擴充套件法。

21 3 8 力扣每日刷題 分割回文串

給你乙個字串 s,請你將 s 分割成一些子串,使每個子串都是回文。返回符合要求的 最少分割次數 示例 1 輸入 s aab 輸出 1 解釋 只需一次分割就可將 s 分割成 aa b 這樣兩個回文子串。示例 2 輸入 s a 輸出 0 示例 3 輸入 s ab 輸出 1 1 s.length 2000...

132 分割回文串 II

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回符合要求的最少分割次數。示例 輸入 aab 輸出 1 解釋 進行一次分割就可將 s 分割成 aa b 這樣兩個回文子串。解法一 public class solution else return dp 0 解法二 如果從分割字串的角...

108 分割回文串 II

中文english 給定字串s,需要將它分割成一些子串,使得每個子串都是回文串.最少需要分割幾次?樣例 1 輸入 a 輸出 0 解釋 a 本身就是回文串,無需分割樣例 2 輸入 aab 輸出 1 解釋 將 aab 分割一次,得到 aa 和 b 它們都是回文串.大致思路 動態規劃 l len s 1....