leetcode131. 分割回文串
【摘要】 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]
思路:搜索回溯,搜索过程中检查是否是回文。
public class Solution { List<List<Strin...
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
思路:搜索回溯,搜索过程中检查是否是回文。
-
public class Solution {
-
List<List<String>> res = new ArrayList<>();
-
// Stack 这个类 Java 的文档里推荐写成 Deque<Integer> stack = new ArrayDeque<Integer>();
-
// 注意:只使用 stack 相关的接口
-
Deque<String> stack = new ArrayDeque<>();
-
int len;
-
public List<List<String>> partition(String s) {
-
len = s.length();
-
if (len == 0) return res;
-
backtracking(s, 0);
-
return res;
-
}
-
private void backtracking(String s, int start) {
-
if (start == len) {
-
res.add(new ArrayList<>(stack));
-
return;
-
}
-
for (int i = start; i < len; i++) {
-
if (checkPalindrome(s, start, i)) {
-
stack.addLast(s.substring(start, i + 1));
-
backtracking(s, i + 1);
-
stack.removeLast();
-
}
-
}
-
}
-
private boolean checkPalindrome(String str, int left, int right) {
-
while (left < right) {
-
if (str.charAt(left) != str.charAt(right)) return false;
-
left++;right--;
-
}
-
return true;
-
}
-
}
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/104410030
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)