思路
需要判断回文串,再选择是否添加到path里
代码
cpp
class Solution {
public:
vector<string> path;
vector<vector<string>> result;
bool isReverse(string s){
int l = 0, r = s.size() - 1;
while(l < r){
if(s[r] != s[l]){
return false;
}
r--;
l++;
}
return true;
}
void backTracking(string s, int statIndex){
if(statIndex == s.size()){
result.push_back(path);
return;
}
string sub;
for(int i = statIndex; i<s.size(); i++){
sub += s[i];
if(!isReverse(sub)) continue;
path.push_back(sub);
backTracking(s, i+1);
path.pop_back();
}
return;
}
vector<vector<string>> partition(string s) {
backTracking(s, 0);
return result;
}
};