题目描述:
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
示例 1:
输入:s = "aab" 输出:[["a","a","b"],["aa","b"]]
示例 2:
输入:s = "a" 输出:[["a"]]
代码思路:
class Solution {
boolean[][] f;
List<List<String>> ret = new ArrayList<List<String>>();
List<String> ans = new ArrayList<String>();
int n;
public List<List<String>> partition(String s) {
List<List<String>> res = new ArrayList<>();
if(s==null|| s.isEmpty()){
return res;
}
StringBuilder st =new StringBuilder();
backtrack(res,new ArrayList<>(),s,s.length(),0);
return res;
}
public void backtrack(List<List<String>> res,List<String> cur,String s,int n,int index ){
if(index==n){
if(!cur.isEmpty()){
res.add(new ArrayList<>(cur));
}
return;
}
for(int i = index;i<n;i++){
String st = s.substring(index,i+1);//分割出新的字符串
if(ishuiwen(st)){
cur.add(st);
backtrack(res,cur,s,n,i+1);//
}else {
continue;
}
cur.remove(cur.size()-1);//弹出最后一个元素
}
}
public boolean ishuiwen(String s){
int l=0,r=s.length()-1;
while(l<=r&&s.charAt(l)==s.charAt(r)){
l++;
r--;
}
if(l>r){
return true;
}
return false;
}
}


454

被折叠的 条评论
为什么被折叠?



