Question:
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>> results = new ArrayList<>();
ArrayList<String> result = new ArrayList<>();
dfs(s,0,result,results);
return results;
}
private void dfs(String s, int step, ArrayList<String> result,
ArrayList<ArrayList<String>> results) {
if(step==s.length()){
results.add(new ArrayList<String>(result));
}
for(int i=step;i<s.length();i++){
String cur = s.substring(step, i+1);
if(isPalindrome(cur)){
result.add(cur);
dfs(s, i+1, result, results);
result.remove(result.size()-1);
}
}
}
private boolean isPalindrome(String cur) {
int start = 0;
int end = cur.length()-1;
while(start<end){
if(cur.charAt(start)!=cur.charAt(end)){
return false;
}
start++;
end--;
}
return true;
}
}leetcode JAVA Palindrome Partitioning 3.45 难度系数3
原文:http://blog.csdn.net/yiding_he/article/details/19058421