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();
            }
        }
    }

};
相关推荐
by2099914 分钟前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习
2601_962218611 小时前
C语言中三种库的编译和使用方法
开发语言·c++
jimy11 小时前
派生类重写基类虚函数(二):override的作用
开发语言·c++
ebiobiz2 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu
hetao17338372 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法
:mnong2 小时前
几何内核“四大金刚“:ACIS、Parasolid、CGM、Open CASCADE 核心特征深度解析
c++·cad·cax
by209992 小时前
从 malloc/free 到 new/delete:真正理解 C++ 中的内存管理与对象生命周期
c语言·c++·经验分享·动态内存管理
欣欣之王来了2 小时前
AI合规专项:AI算法透明度的合规要求
人工智能·算法
wzdark2 小时前
分块思想在算法优化中的实践与应用4
算法
Because_of_Her13 小时前
dfs-洪水填充技巧
笔记·算法·深度优先·洪水填充