Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s =”aab”,
Return
[
[“aa”,”b”],
[“a”,”a”,”b”]
]
法1:用到回溯法
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<ArrayList<String>> result=new ArrayList<>();
ArrayList<String> list=new ArrayList<>();
addPalin(result,list,s);
return result;
}
public void addPalin(ArrayList<ArrayList<String>> result,ArrayList<String> list,String s){
if(s.length()==0){
result.add(new ArrayList<String>(list));
return;
}
for(int i=1;i<=s.length();++i){
if(!isPali(s.substring(0,i))){
continue;
}
list.add(s.substring(0,i));
addPalin(result,list,s.substring(i));
list.remove(list.size()-1);
}
}
public boolean isPali(String str){
int i=0;
int j=str.length()-1;
while(i<j){
if(str.charAt(i)!=str.charAt(j))
return false;
++i;
--j;
}
return true;
}
}