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"] ]
using DSF
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
if(s==null)
return list;
ArrayList<String> sub = new ArrayList<String>();
partitionHelper(s,0,sub,list);
return list;
}
public void partitionHelper(String s, int index, ArrayList<String> sub, ArrayList<ArrayList<String>> list){
if(index==s.length()){
list.add(new ArrayList<String>(sub));
list.add(newSub);
}
for(int i=index;i<s.length();i++){
if(isPalindrome(s,index,i)){
sub.add(s.substring(index,i+1));
partitionHelper(s,i+1,sub,list);
sub.remove(sub.size()-1);
}
}
}
public boolean isPalindrome(String s, int start, int end){
while(start<end){
if(s.charAt(start)==s.charAt(end)){
start++;
end--;
}
else
return false;
}
return true;
}