Leetcode 131. 分割回文串
题目
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
测试样例
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
题解
回溯
选取字符串片段时,要选是回文串的。详细过程见代码
代码
vector<vector<string>> ans;
vector<string> now;
int isCircle(string& s,int length){ //判断当前的字符串是否为回文串
int i=0,j=length-1;
while(i<j){
if(s[i] == s[j]){
i++;
j--;
}else return 0;
}
return 1;
}
void dfs(int begin,int n,string& s){
if(begin == n){
ans.push_back(now);
}else{
string nows;
for(int i=begin; i<n; i++){
nows += s[i];
if(!isCircle(nows,i-begin+1)) continue;
now.push_back(nows);
dfs(i+1,n,s);
now.pop_back();
}
}
}
vector<vector<string>> partition(string s) {
dfs(0,s.length(),s);
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-partitioning
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。