給定一個字符串 s,將 s 分割成一些子串,使每個子串都是迴文串。
返回 s 所有可能的分割方案。
示例:
輸入: "aab" 輸出: [ ["aa","b"], ["a","a","b"] ]
解題思路: dfs找出所有的合法情況即可。
class Solution {
public:
vector<vector<string> >v;
bool judge(string s){
int l = 0, r = s.size()-1;
while(l < r){
if(s[l] != s[r]) return false;
l++ ,r-- ;
}
return true;
}
void dfs(int now, int n, vector<string > &tmp, string str){
if(now == n){
v.push_back(tmp);
return ;
}
for(int i=now; i < n; i++){
string newstr = str.substr(now, i-now+1);
if(judge(newstr)){
tmp.push_back(newstr);
dfs(i+1, n, tmp, str);
tmp.pop_back();
}
}
}
vector<vector<string>> partition(string s) {
vector<string >tmp;
dfs(0, s.size(), tmp, s);
return v;
}
};