给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: “aab”
输出:
[
[“aa”,“b”],
[“a”,“a”,“b”]
]
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> ret =new ArrayList<List<String>>();
if(s.length()==0) return ret;
List<String> list=new ArrayList<String>();
partition(s,list,ret);
return ret;
}
public void partition(String s,List<String> list,List<List<String>> ret) {
if(s.length()==0){
ret.add(new ArrayList(list));
return;
}
for(int i=1;i<=s.length();i++){
if(is(s.substring(0,i))){
list.add(s.substring(0,i));
partition(s.substring(i,s.length()),list,ret);
list.remove(list.size()-1);
}
}
}
private boolean is(String s){
for(int i=0,j=s.length()-1;i<=j;i++,j--){
if(s.charAt(i)!=s.charAt(j)) return false;
}
return true;
}
}