131.分割回文串
思路:回溯
1.需要一个判断当前子串是不是回文串的函数,使用双指针
2.回溯遍历i,从start开始,
(1)判断[start,i]是否是回文串,不是就continue
(2)如果是回文串,记录到tmp,移动start,递归
(3)回溯
class Solution {
public:
vector<vector<string>>res;
vector<string>tmp;
string miniTmp;
vector<vector<string>> partition(string s) {
backtrack(0,s);
return res;
}
void backtrack(int start,string s){
if(start>=s.size()){
res.push_back(tmp);
return;
}
for(int i=start;i<s.size();i++){
string miniTmp=s.substr(start,i-start+1);
if(isValid(miniTmp)==true){
tmp.push_back(miniTmp);
backtrack(i+1,s);
tmp.pop_back();
}else{
continue;
}
}
}
bool isValid(string s){
int i=0;
int j=s.size()-1;
while(i<j){
if(s[i]!=s[j])
return false;
i++;
j--;
}
return true;
}
};