LeetCode:131. 分割回文串

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录
LeetCode:131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。

示例 1:

输入:s = "aab"

输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"

输出:[["a"]]

其实这题和前面的组合问题还是类似的,只是这里加了个切割字符串并且判断是否回文的概念,需要注意子串怎么切割,这里是左闭右开的,index~i + 1这个区间的就是子串

java 复制代码
	public List<List<String>> partition(String s) {
        List<List<String>> res = new ArrayList<>();
        backtracking(s, 0, new ArrayList<>(), res);
        return res;
    }

    private void backtracking(String s, int index, List<String> path, List<List<String>> res) {
        if (index == s.length()) {
            res.add(new ArrayList(path));
            return;
        }
        for (int i = index; i < s.length(); i++) {
            if (isPalindrome(s, index, i)) {
                path.add(s.substring(index, i + 1));
                backtracking(s, i + 1, path, res);
                path.remove(path.size() - 1);
            }
        }
    }

    private boolean isPalindrome(String s, int start, int end) {
        while (start <= end) {
            if (s.charAt(start) != s.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
相关推荐
忆源4 分钟前
C -- 结构体内存对齐的原理
c语言·开发语言·算法
朔北之忘 Clancy10 分钟前
2024 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
躺不平的理查德33 分钟前
C 语言中二维数组的退化
c语言·开发语言·数据结构·算法
细心的莽夫1 小时前
SpringMVC复习笔记
java·spring boot·笔记·学习·spring
新知图书1 小时前
Spring MVC数据绑定POJO类型
java·spring·mvc
青木川崎1 小时前
java集合面试题
java·windows·面试
hkj88081 小时前
SM3在线哈希运行
算法
工业甲酰苯胺2 小时前
.NET8.0多线程编码结合异步编码示例
java·算法·.net
Java知识日历2 小时前
Springboot集成Easy Rules引擎,实现一个商品优惠券系统
java·spring boot·后端·spring
捕鲸叉2 小时前
C++并发编程之异常安全性增强
c++·算法·并发编程