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;
}

posted @ 2022-11-20 15:40  MarkLeeBYR  阅读(24)  评论(0)    收藏  举报