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 @   MarkLeeBYR  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示