分割回文串(力扣131)

embedded/2024/9/23 13:53:28/

解题思路:仍就是上递归三部曲,但于此同时要明白此时的index就可以作为切割回文串的线了

具体代码如下:


 

class Solution {

private:

    vector<vector<string>> result;

    vector<string> path; // 放已经回文的子串

    void backtracking (const string& s, int startIndex) {

        // 如果起始位置已经大于s的大小,说明已经找到了一组分割方案了

        if (startIndex >= s.size()) {

            result.push_back(path);

            return;

        }

        for (int i = startIndex; i < s.size(); i++) {

            if (isPalindrome(s, startIndex, i)) {   // 是回文子串

                // 获取[startIndex,i]在s中的子串

                string str = s.substr(startIndex, i - startIndex + 1);

                path.push_back(str);

            } else {                                // 不是回文,跳过

                continue;

            }

            backtracking(s, i + 1); // 寻找i+1为起始位置的子串

            path.pop_back(); // 回溯过程,弹出本次已经添加的子串

        }

    }

    bool isPalindrome(const string& s, int start, int end) {

        for (int i = start, j = end; i < j; i++, j--) {

            if (s[i] != s[j]) {

                return false;

            }

        }

        return true;

    }

public:

    vector<vector<string>> partition(string s) {

        result.clear();

        path.clear();

        backtracking(s, 0);

        return result;

    }

};

题目如下:

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 

回文串

 。返回 s 所有可能的分割方案。

示例 1:

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

示例 2:

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

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

http://www.ppmy.cn/embedded/33073.html

相关文章

深入浅出 BERT

Transformer 用于学习句子中的长距离依赖关系&#xff0c;同时执行序列到序列的建模。 它通过解决可变长度输入、并行化、梯度消失或爆炸、数据规模巨大等问题&#xff0c;比其他模型表现更好。使用的注意力机制是神经架构的一部分&#xff0c;使其能够动态突出显示输入数据的…

C语言数据结构之队列

目录 1.队列的概念及结构2.队列的实现逻辑3.队列的代码实现4.相关例题选择题 •͈ᴗ•͈ 个人主页&#xff1a;御翮 •͈ᴗ•͈ 个人专栏&#xff1a;C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#x…

php中常用的数据类型汇总

在 PHP 中&#xff0c;常用的数据类型主要有以下几种&#xff1a; 标量类型&#xff08;Scalar Types&#xff09; integer&#xff08;整型&#xff09;&#xff1a;用于存储整数&#xff0c;可以是正数或负数。float&#xff08;浮点型/双精度型&#xff09;&#xff1a;用于…

Qt 配置 OpenCV

MinGW CMake 下载 OpenCV 源代码 使用 CMake 生成 OpenCV 的 Makefile // 设置源码 Where is the source code: C:\Program Files\OpenCV\source // 生成路径 C:\Program Files\OpenCV\build点击 Configure&#xff0c;设置编译器 Specify the generator for this project:…

JVM-02

字节码文件是一种特殊的文件格式&#xff0c;它包含了将源代码转换为机器可执行代码所需的指令集。字节码文件通常是由编译器将源代码编译为字节码的中间表示形式。 在Java中&#xff0c;字节码文件的扩展名为.class&#xff0c;它存储了编译后的Java代码。这些字节码文件可以在…

vue设置必填项

表单&#xff1a; <el-form-item label"标题" prop"title" ><el-input placeholder"标题" v-model"form.title"></el-input></el-form-item> 在data中添加一个rules来规定 rules: {title: [{ required: t…

Golang日志管理精讲:`log`库的高级用法与性能优化

Golang日志管理精讲&#xff1a;log库的高级用法与性能优化 引言log库概览核心组件介绍日志级别的设置标准Logger与自定义Logger 基础用法创建基础日志实例日志级别的设置标准Logger与自定义Logger 高级技巧日志格式自定义多日志文件分流集成系统服务中的日志管理 并发与性能优…

【Nginx 开发】反向代理配置,负载均衡配置,动静分离配置

nginx 配置 反向代理配置负载均衡配置动静分离 反向代理 我们根据实例进行讲解&#xff0c;效果是通过在浏览器访问www.hlh.com,跳转到Linux系统的tomcat主页面中 第一步&#xff1a;在windows系统的host文件进行域名和ip对应关系的配置 在host文件中添加自己的地址映射 192.…