Return all possible palindrome partitioning of s.
[
["aa","b"],
["a","a","b"]
]
//时间复杂度O(2^n),空间复杂度O(n)
public List<List<String>> partition(String s) {
List<List<String>> result=new ArrayList<>();
ArrayList<String> path=new ArrayList<String>();
dfs(s,0,path,result);
return result;
}
public boolean isPalindrome(String s,int start,int end){
while(start<end){
if(s.charAt(start)!=s.charAt(end)){
return false;
}
start++;
end--;
}
return true;
}
public void dfs(String s,int start,ArrayList<String> path,List<List<String>> result){
if(start==s.length()){
result.add(new ArrayList<String>(path));
return;
}
for(int i=start;i<s.length();i++){
if(isPalindrome(s,start,i)){
path.add(s.substring(start, i+1));
dfs(s,i+1,path,result);
path.remove(path.size()-1);
}
}
}