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"] ]
public class Solution { public ArrayList<ArrayList<String>> partition(String s) { ArrayList<ArrayList<String> > result = new ArrayList<ArrayList<String> >(); int len = s.length(); if(len > 0){ for(int i = 0; i < len; ++i){ if(isPalindrome(s.substring(0, i + 1))){ ArrayList<ArrayList<String> > temp = partition(s.substring(i + 1, len)); int size = temp.size(); if(size > 0){ while(!temp.isEmpty()){ ArrayList<String> aPartition = new ArrayList<String>(); aPartition.add(s.substring(0, i + 1)); ArrayList<String> alist = temp.remove(0); aPartition.addAll(alist); result.add(aPartition); } } else{ ArrayList<String> alist = new ArrayList<String>(); alist.add(s.substring(0,i + 1)); result.add(alist); } } } } return result; } public boolean isPalindrome(String s){ boolean isPal = true; for(int i = 0,j = s.length() - 1; i <= j; ++i, --j){ if(s.charAt(i) != s.charAt(j)){ isPal = false; break; } } return isPal; } }