leetcode132分割回文字串

2021-10-06 21:43:46 字數 616 閱讀 5758

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

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

示例:輸入: "aab"

輸出: 1

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

1.遞迴+回溯

記錄每一次分割所需要的次數,求最小值

**如下:

class solution 

void 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...