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

};
相关推荐
To_OC5 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495645 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
fqbqrr6 小时前
2607C++,soui与安卓
c++·soui
fqbqrr9 小时前
2607C++,使用微软detours勾挂工具
c++
爱刷碗的苏泓舒9 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
蓝悦无人机12 小时前
C++基础 — 函数总结
开发语言·c++
烬羽12 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米12 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记13 小时前
堆(数据结构)
数据结构·