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

};
相关推荐
小超超爱学习99371 天前
大数乘法,超级简单模板
开发语言·c++·算法
Ricardo-Yang1 天前
SCNP语义分割边缘logits策略
数据结构·人工智能·python·深度学习·算法
凌波粒1 天前
LeetCode--344.反转字符串(字符串/双指针法)
算法·leetcode·职场和发展
啊哦呃咦唔鱼1 天前
LeetCode hot100-543 二叉树的直径
算法·leetcode·职场和发展
soragui1 天前
【Python】第 4 章:Python 数据结构实现
数据结构·windows·python
sinat_286945191 天前
harness engineering
人工智能·算法·chatgpt
少许极端1 天前
算法奇妙屋(四十三)-贪心算法学习之路10
学习·算法·贪心算法
samroom1 天前
【鸿蒙应用开发 Dev ECO Studio 5.0版本】从0到1!从无到有!最全!计算器------按钮动画、滑动退格、中缀表达式转后缀表达式、UI设计
数据结构·ui·华为·typescript·harmonyos·鸿蒙
xyx-3v1 天前
qt创建新工程
开发语言·c++·qt
算法鑫探1 天前
10个数下标排序:最大值、最小值与平均值(下)
c语言·数据结构·算法·排序算法·新人首发