问题
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
例子
思路
-
方法1
回溯查看是不是回文字符串
-
方法2
代码
//方法1
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> list = new ArrayList<>();
get(list,new ArrayList<String>(),s,0);
return list;
}
public void get(List<List<String>> list, List<String> temp_list, String s, int c) {
if(c==s.length()) {
list.add(new ArrayList<String>(temp_list));
return;
}
else{
int i=c, j=s.length()-1;
while(i<=j) {
if(check(s.substring(i,j+1))){
temp_list.add(s.substring(i,j+1));
get(list,temp_list,s,j+1);
temp_list.remove(temp_list.size()-1);
}
j--;
}
}
}
//是否是回文
public boolean check(String s) {
int i=0,j=s.length()-1;
while(i<j) {
if(s.charAt(i)!=s.charAt(j)) return false;
i++;
j--;
}
return true;
}
}
//方法2