leetcode-分割回文串

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

示例 1:

输入:s = "aab"

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

示例 2:

输入:s = "a"

输出:\["a"]

提示:

1 <= s.length <= 16

s 仅由小写英文字母组成

思路 :枚举分割的位置。判断分割后的字符串是否为回文串,是就保存当前字符串,继续分割剩下的字符串。
代码

c 复制代码
class Solution {
    public List<List<String>> partition(String s) {
        List<List<String>> res = new ArrayList<>();
        dfs(s, new ArrayList<String>(),res);
        return res;
    }

    public void dfs(String s,List<String> temp, List<List<String>> res){
        if(s.isEmpty()){
            res.add(new ArrayList<>(temp));
            return;
        }

        // 枚举分割位置
        for(int i = 1;i<=s.length();i++){
            String t = s.substring(0,i);
            if(isHuiWen(t)){
                temp.add(t);
                dfs(s.substring(i),temp,res);
                temp.remove(temp.size()-1);
            }
        }

    }
    public boolean isHuiWen(String a){
        if(a.isEmpty()){
            return false;
        }
        int left = 0;
        int right = a.length()-1;
        while(left<right){
            if(a.charAt(left)!=a.charAt(right)){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}
相关推荐
大白话_NOI13 小时前
【洛谷 P2249】查找(深基 13. 例 1)+ 详细分析
c++·算法
吠品13 小时前
C++实现m行n列带边框的长方形输出
算法
智者知已应修善业13 小时前
【51单片机2个外部中断显示中断历时,初始化8左移3位共阳数码管】2024-6-6
c++·经验分享·笔记·算法·51单片机
西安邮电大学13 小时前
分治算法详细讲解
java·后端·其他·算法·面试
code bean13 小时前
平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解
算法
青梅橘子皮14 小时前
Linux---进程控制(2)(进程程序替换)
linux·c++·算法
Shan120514 小时前
经典问题——验证栈序列
数据结构·算法
2501_9065651214 小时前
勾股定理证明
算法
Shan120514 小时前
无向图的Hierholzer算法流程(二)
算法
gihigo199814 小时前
基于蒙特卡洛的异常值剔除(RANSAC + MC置信区间)—MATLAB实现
开发语言·算法·matlab