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"] ]
找所有的回文拆分组合
这种题一看就想到DFS
public class Solution {
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<ArrayList<String>> ret = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
dfs(ret,list,s);
return ret;
}
private void dfs(ArrayList<ArrayList<String>> ret, ArrayList<String> list,String s) {
if(s.length()==0){
ret.add(new ArrayList<String>(list));
return;
}
for(int i=1;i<=s.length();i++){
if(isPanlidrome(s.substring(0,i))){
list.add(s.substring(0, i));
dfs(ret, list, s.substring(i));
list.remove(list.size()-1);
}
}
}
private boolean isPanlidrome(String string) {
int pre=0;
int post=string.length()-1;
while(pre<post){
if(string.charAt(pre)!=string.charAt(post))
return false;
pre++;
post--;
}
return true;
}
}