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 List<List<String>> partition(String s) {
int len = s.length();
List<List<String>>[] res = new List[len + 1];
res[0] = new ArrayList<List<String>>();
res[0].add(new ArrayList<String>());
boolean[][] pair = new boolean[len][len];
for (int i = 0; i < s.length(); i++) {
res[i + 1] = new ArrayList<List<String>>();
for (int j = 0; j <= i; j++) {
if (s.charAt(i) == s.charAt(j)
&& (i - j < 2 || pair[j + 1][i - 1])) {
pair[j][i] = true;
for (List<String> r : res[j]) {
List<String> ri = new ArrayList<String>(r);
ri.add(s.substring(j, i + 1));
res[i + 1].add(ri);
}
}
}
}
return res[len];
}
}
?
原文:http://hcx2013.iteye.com/blog/2220195