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"] ]
» Solve this problem
深度优先遍历分割字符串S:
每次枚举一个回文的子串,直到完整分割整个字符串S。
public class Solution {
ArrayList<ArrayList<String>> answer;
String s;
public boolean isPalindrome(int l, int r) {
while (l < r) {
if (s.charAt(l++) != s.charAt(r--)) {
return false;
}
}
return true;
}
public void part(int idx, ArrayList<String> t) {
if (idx == s.length()) {
answer.add(t);
return;
}
ArrayList<String> temp;
for (int i = idx; i < s.length(); i++) {
temp = new ArrayList<String>(t);
if (isPalindrome(idx, i)) {
temp.add(s.substring(idx, i + 1));
part(i + 1, temp);
}
}
}
public ArrayList<ArrayList<String>> partition(String s) {
// Start typing your Java solution below
// DO NOT write main() function
this.s = s;
answer = new ArrayList<ArrayList<String>>();
part(0, new ArrayList<String>());
return answer;
}
}