leetcod 131.分割回文串(回溯、迴文字串)
給定一個字串 s,將 s 分割成一些子串,使每個子串都是迴文串。
返回 s 所有可能的分割方案。
示例:
輸入: “aab”
輸出:
[
[“aa”,“b”],
[“a”,“a”,“b”]
]
思路:
回溯,判斷每段是否是迴文字串
程式碼如下:
class Solution {
public:
vector<vector<string>> partition(string s) {
if(s.empty()) return {{}};
vector<vector<string>>res;
vector<string>path;
backtrack(s,0,path,res);
return res;
}
void backtrack(string s,int cur,vector<string>&path,vector<vector<string>>&res){
if(cur==s.size()){
res.push_back(path);
}
for(int end=cur+1;end<=s.size();end++){
string ss=s.substr(cur,end-cur);
if(!isPalindrome(ss)) continue;
path.push_back(ss);
backtrack(s,end,path,res);
path.pop_back();
}
}
bool isPalindrome(string& s){
int i=0;
int j=s.size()-1;
while(i<j){
if(s[i++]!=s[j--])
return false;
}
return true;
}
};
相關文章
- 回溯演算法 LeetCode 131 分割回文子串演算法LeetCode
- leetcode------分割回文串LeetCode
- Day 26| 39. 組合總和 、 40.組合總和II 、 131.分割回文串
- LeetCode 39. 組合總和 40.組合總和II 131.分割回文串LeetCode
- LeetCode-131-分割回文串LeetCode
- 程式碼隨想錄演算法訓練營第26天 | 回溯02:39. 組合總和、40.組合總和II、131.分割回文串演算法
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- 迴文字串字串
- 程式碼隨想錄演算法訓練營第23天 | 39.組合總和 40.組合總和Ⅱ 131.分割回文串演算法
- 27天【程式碼隨想錄演算法訓練營34期】第七章 回溯演算法part03(● 39. 組合總和 ● 40.組合總和II ● 131.分割回文串)演算法
- 程式碼隨想錄演算法訓練營第27天 | 39. 組合總和 、 40.組合總和II 、 131.分割回文串演算法
- Python找回文子串的方法Python
- 程式碼隨想錄演算法訓練營,9月19日 | 39. 組合總和,40.組合總和II,131.分割回文串演算法
- L2-008 最長對稱子串【最長迴文字串】字串
- 今日面試題:最長迴文子串;及迴文分割分析面試題
- Manacher-求最長迴文字串字串
- Leetcode:1616. 分割兩個字串得到迴文串LeetCode字串
- (迴文串)leetcode各種迴文串問題LeetCode
- 找到最長迴文字串 - Manacher's Algorithm字串Go
- URAL 1297. Palindrome(字尾陣列求最大回文串)陣列
- LeetCode 5.最長的迴文字串LeetCode字串
- java 最長迴文子串Java
- leetcode題解(遞迴和回溯法)LeetCode遞迴
- 最長公共子序列&迴文字串 nyoj動態規劃字串動態規劃
- leedcode-最長迴文串
- 「演算法之美系列」遞迴與回溯(JS版)演算法遞迴JS
- 關於遞迴和回溯的一次深入思考遞迴
- 用棧+回溯+非遞迴解決N皇后問題遞迴
- [LeetCode] Valid Palindrome II 驗證迴文字串之二LeetCode字串
- LeetCode - 409 - 最長迴文串LeetCode
- 常用演算法之驗證迴文串演算法
- 演算法-兩最長迴文子串演算法
- LEECODE 5 求最長迴文子串
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- c++迷宮問題回溯法遞迴演算法C++遞迴演算法
- 回溯和遞迴實現迷宮問題(C語言)遞迴C語言
- [動態規劃] 六、最長迴文子串動態規劃