思路
这道题和之前的组合问题一样,就是在将一个结果加入到path中需要判断下是否是回文字符,如果是就加入,不是接遍历下一个。
代码
class Solution {
List<String> path = new ArrayList<>();
List<List<String>> res = new ArrayList<>();
public List<List<String>> partition(String s) {
fun(s,0);
return res;
}
public void fun(String s,int index){
if(index>=s.length()){
res.add(new ArrayList(path));
return;
}
for(int i =index;i<s.length();i++){
if(is(s.substring(index,i+1))){
path.add(s.substring(index,i+1));
}else{
continue;
}
fun(s,i+1);
path.remove(path.size()-1);
}
}
public boolean is(String s){
if(s.length()==0){
return false;
}
int left = 0;
int right = s.length()-1;
while(left <=right){
if(s.charAt(left) != s.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
|