131. Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s.
Example 1:
Input: s = "aab" Output: [["a","a","b"],["aa","b"]]
Example 2:
Input: s = "a" Output: [["a"]]
回溯类问题,和 78 subsets类似:https://www.cnblogs.com/MarkLeeBYR/p/16887119.html。递归条件也是i+1
public List<List<String>> partition(String s) {
List<List<String>> res = new ArrayList<>();
List<String> list = new ArrayList<>();
helper(s, list, res, 0);
return res;
}
public void helper(String s, List<String> list, List<List<String>> res, int pos) {
if (pos == s.length()) {
res.add(new ArrayList<>(list));
return;
}
for (int i = pos; i < s.length(); i++) {
if (!isPal(s, pos, i)) {
return;
}
list.add(s.substring(pos, i + 1));
helper(s, list, res, i + 1);
list.remove(list.size() - 1);
}
}
public boolean isPal(String s, int low, int high) {
while (low < high) {
if (s.charAt(low++) != s.charAt(high--)) {
return false;
}
}
return true;
}
浙公网安备 33010602011771号