回溯演算法 LeetCode 131 分割回文子串
問題描述
思路
在寫題時,如果題目是要求列舉所有的情況,那麼首先就要考慮遞迴,因為遞迴本身就會回溯,但根據不同的題目,在考慮時,就要注意遞迴的引數是否要和遞迴本身一樣進行回溯,這也是回溯的難點和重點。如果狀態容易儲存,就可以考慮動態規劃的方法來接,但像是本題一樣的要求列舉所有的到的解時,就用回溯法吧。
確定好方法之後,那接下來就是畫出樹狀圖了,然後根據樹狀圖來進行解答。
程式碼
class Solution {
vector <vector <string>> res;
bool isHuiwem(string s) {//這裡就是判斷是否為迴文子串
for(int i=0;i<s.size()/2;i++) {
if(s[i]!=s[s.size()-1-i]) return false;
}
return true;
}
void getPartition(string s,vector <string> p)
{
if(s.empty()==true) {
res.push_back(p);
return;//這個返回要注意一下
}
for(int i=1;i<=s.size();i++) {
if(isHuiwem(s.substr(0,i))==true) {
p.push_back(s.substr(0,i));
getPartition(s.substr(i),p);
p.pop_back();//這就是回溯的關鍵,在執行上一行操作後,p並不會改變,
//因為函式呼叫的只是形參,直接根據樹狀圖,就按函式本身代表的意思來解就行了,不用跟著函式跳,,這點很重要
}
}
}
public:
vector<vector<string>> partition(string s) {
if(s.size()==0) return res;
vector <string> p;
getPartition(s,p);
return res;
}
};
相關文章
- LeetCode-131-分割回文串LeetCode
- leetcod 131.分割回文串(回溯、迴文字串)字串
- leetcode------分割回文串LeetCode
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- LeetCode 39. 組合總和 40.組合總和II 131.分割回文串LeetCode
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- Python找回文子串的方法Python
- 程式碼隨想錄演算法訓練營第26天 | 回溯02:39. 組合總和、40.組合總和II、131.分割回文串演算法
- Day 26| 39. 組合總和 、 40.組合總和II 、 131.分割回文串
- 27天【程式碼隨想錄演算法訓練營34期】第七章 回溯演算法part03(● 39. 組合總和 ● 40.組合總和II ● 131.分割回文串)演算法
- 程式碼隨想錄演算法訓練營第二十三天| leetcode39. 組合總和、leetcode40.組合總和II、leetcode131.分割回文串演算法LeetCode
- 程式碼隨想錄演算法訓練營第23天 | 39.組合總和 40.組合總和Ⅱ 131.分割回文串演算法
- 程式碼隨想錄演算法訓練營第27天 | 39. 組合總和 、 40.組合總和II 、 131.分割回文串演算法
- 程式碼隨想錄演算法訓練營,9月19日 | 39. 組合總和,40.組合總和II,131.分割回文串演算法
- LeetCode演算法訓練-回溯總結LeetCode演算法
- [leetcode 30 串聯所有單詞的子串 10ms]LeetCode
- 「leetcode」78. 子集【回溯演算法】詳解!LeetCode演算法
- LeetCode 5.最長迴文子串LeetCode
- 【LeetCode回溯演算法#08】遞增子序列,鞏固回溯演算法中的去重問題LeetCode演算法
- 演算法-兩最長迴文子串演算法
- LeetCode——無重複字元的最長子串LeetCode字元
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- LeetCode-5. 最長迴文子串(Manacher)LeetCode
- [LeetCode] Substring with Concatenation of All Words 串聯所有單詞的子串LeetCode
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- 回溯演算法演算法
- 子串位置
- leetcode.回溯演算法能解決什麼問題?LeetCode演算法
- 演算法之字串——最長迴文子串演算法字串
- BMH子串查詢演算法(PHP實現)演算法PHP
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- Q13 LeetCode76 最小覆蓋子串LeetCode
- Leetcode:1616. 分割兩個字串得到迴文串LeetCode字串
- 演算法-回溯演算法演算法
- leetcode 130被圍繞的區域 回溯演算法LeetCode演算法
- 「leetcode」93.復原IP地址【回溯演算法】詳解!LeetCode演算法
- 演算法-無重複字元的最長子串演算法字元