LeetCode 分割回文串II(動態規劃)

2021-09-11 06:21:18 字數 1223 閱讀 4075

給定乙個字串 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...