給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。
返回符合要求的最少分割次數。
示例:輸入: "aab"
輸出: 1
解釋: 進行一次分割就可將 s 分割成 ["aa","b"] 這樣兩個回文子串。
1.遞迴+回溯
記錄每一次分割所需要的次數,求最小值
**如下:
class solutionvoid dfs(string s,int start,vector&str)
for(int i=start;i結果超時
2.動態規劃+中心擴充套件法
設dp[i]表示以i結尾的最小分割次數,遍歷字串中每乙個元素,對於當前元素i使用中心擴充套件法,假設最後兩邊分別擴充套件到left,right,即(left,right)之間是回文字串,則dp[right]=min(dp[right],dp[left-1]+1)
**如下:
class solution
return dp[n - 1];
}void centerexpand(string& s, vector& dp, int l, int r)
}};
leetcode132 分割回文串II
給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回符合要求的最少分割次數。示例 輸入 aab 輸出 1 解釋 進行一次分割就可將 s 分割成 aa b 這樣兩個回文子串。01揹包 給定num個物品,每種物品都有自己的重量 wi 和價值 vi,且都為整數,在限定的總重量weight內...
leetcode 132 分割回文串II
1 今天的題目困難,顯然我又不會做 2 在昨天官方答案基礎上稍微做了改動。還是貼出官方答案吧。3 題目思路 求最小的分割次數,既然是分割回文串ii必然和分割回文串i有相通之處,還記得昨天的採用動態規劃嘛,所以可以求解f i 最小分割次數,f i 為s 0 i 之間的最小分割次數,求解f i 考慮列舉...
leetCode 132 分割回文串 II
需要進行兩次動態規化,第一次動態規化計算f i j 也就是s i,j 是否是回文串。第二次動態規化設定g i 代表s 0,i 的最小分割次數,如果s 0,i 是回文串,則g i 0,如果不是回文串則 g i g j 1,0 j i,s j 1,i 是回文串。class solution for in...