LeetCode热题100 分割回文串

题目描述

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

示例 1:

输入 :s = "aab"
输出\["a","a","b","aa","b"]

示例 2:

输入 :s = "a"
输出\["a"]

提示:

1 <= s.length <= 16

s 仅由小写英文字母组成

思路

进行dfs遍历,每层从l到r是否合理。

代码

cpp 复制代码
class Solution {
public:
    vector<vector<string>> partition(string s) {
        // 记录多个答案
        vector<vector<string>>ans;
        // 记录单个答案
        vector<string>res;

        // dfs遍历每种情况
        dfs(s, 0, s.length(), res, ans);

        return ans;
    }

    void dfs(string &s, int first, int n, vector<string> &res, vector<vector<string>> &ans)
    {
        if(first == n)
        {
            ans.push_back(res);
            return;
        }

        for(int i = first; i < n; ++i)
        {
            // 判断[l-r]是否是回文串
            int l = first, r = i;
            while(l < r && s[l] == s[r]) ++l, --r;
            if(l > r || s[l] == s[r])
            {
                res.push_back(s.substr(first, i - first + 1));
                dfs(s, i + 1, n, res, ans);
                res.pop_back();
            }
        }
    }

};
相关推荐
aaaameliaaa10 分钟前
计算斐波那契数(递归、迭代)(1,1,2,3,5.....)
c语言·开发语言·笔记·算法·排序算法
Jerry16 分钟前
LeetCode 977. 有序数组的平方
算法
C路在脚下26 分钟前
HSMS 连接总失败?排查这 5 个配置点
c++·嵌入式硬件
金融小师妹27 分钟前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
Turbo正则41 分钟前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数
郝学胜_神的一滴42 分钟前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
c++·qt
sugar__salt1 小时前
手撕字符串算法:反转、回文、验证回文 Ⅱ 完整拆解
javascript·算法·面试·职场和发展
To_OC1 小时前
从一行报错开始,把字符串反转、回文算法连带着包装类一起捋明白
javascript·算法·api
LCG米1 小时前
机器人控制系统与运动规划:从RRT算法到ROS move_base实战
算法·机器人
QiLinkOS1 小时前
第三视觉理解徐玉生与他的商业活动(26)
大数据·c++·人工智能·算法·开源协议