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"] ]
代码如下:
import java.util.ArrayList;
import java.util.List;
public class PalindromePartitioning {
public List<ArrayList<String>> partition(String s){
List<ArrayList<String>> list = new ArrayList<>();
backtrack(list,new ArrayList<>(),s,0);
return list;
}
private void backtrack(List<ArrayList<String>> list, ArrayList<String> arrayList, String s, int start) {
if(start == s.length())
list.add(new ArrayList<>(arrayList));
else{
for(int i=start;i<s.length();i++){
if(isPalindrome(s,start,i)){
arrayList.add(s.substring(start, i+1));
backtrack(list,arrayList,s,i+1);
arrayList.remove(arrayList.size()-1);
}
}
}
}
private boolean isPalindrome(String s, int low, int high) {
while(low<high){
if(s.charAt(low++) != s.charAt(high--))
return false;
}
return true;
}
}