給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。
返回符合要求的最少分割次數。
示例:
輸入: "aab"
輸出: 1
解釋: 進行一次分割就可將 s 分割成 ["aa","b"] 這樣兩個回文子串。
請先翻閱 leetcode 分割回文子串
此題就是在上一題將所有分割方法修改為最少的分割次數。
方法一:回溯法。繼續使用上一題的**,只是在dfs函式中新增乙個變數記錄分割的次數,並尋找到分割次數最少的分割方法。(但是超時了。。。)
class solution
dfs(s, 0, 0);//開始搜尋
return minresult;
} //從beginindex開始,尋找回文子串
void dfs(string &str, int beginindex, int steps)
//對擷取長度進行窮舉
int endindex = strsize - 1;
while (endindex >= beginindex)
--endindex;
} }//判斷在str串中擷取[beginindex, endindex]段是否是回文串
方法二:動態規劃。
class solution
int strsize = s.size();
vector> judge(strsize, vector(strsize, false));//judge[j][i]用於記錄s串[i,j]是否是回文
vectordp(strsize, int_max);//dp[i]用於記錄s串中[0, i]需要分割的次數
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...