分割回文串(力扣131)

devtools/2024/9/24 13:26:16/

解题思路:仍就是上递归三部曲,但于此同时要明白此时的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/devtools/32978.html

相关文章

关机恶搞小程序

1. system("shutdown")的介绍 当system函数的参数是"shutdown"时&#xff0c;它将会执行系统的关机命令。 具体来说&#xff0c;system("shutdown")的功能是向操作系统发送一个关机信号&#xff0c;请求关闭计算机。这将触发操作系统执行一系列…

求矩阵对角线元素之和(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int sum 0;int a[3][3] { 0 };//获取数组a的值&#xff1b;printf(&qu…

c++多线程2小时速成

简介 c多线程基础需要掌握这三个标准库的使用&#xff1a;std::thread,std::mutex, andstd::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::th…

Pop_OS 个人配置

Pop_OS 个人配置 系统优化 DNS 配置 小技巧&#xff1a; 使用 阿里云 免费 DNS 可以有效解决 GitHub 访问问题 IP4 223.5.5.5 223.6.6.6IP6 2400:3200::1 2400:3200:baba::1Ubuntu 镜像 使用 华为云 提供的 Ubunut 镜像 sudo sed -i "shttp://apt.pop-os.orghttp://…

OceanBase 分布式数据库【信创/国产化】- OceanBase 平台产品 - 迁移评估工具 OMA

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase 平台产品 - 迁移评估工具 OMA前言OceanBase 数据更新架构OceanBase 平台产品 - 迁移评估工具 OMA兼容性评估性能评估导出 OceanBase 数据库对象和 SQL 语句OceanBase 分布式数据库【信创/国产…

内核workqueue框架

workqueue驱动的底半部实现方式之一就是工作队列&#xff0c;作为内核的标准模块&#xff0c;它的使用接口也非常简单&#xff0c;schedule_work或者指定派生到哪个cpu的schedule_work_on。 还有部分场景会使用自定义的workqueue&#xff0c;这种情况会直接调用queue_work和qu…

双fifo流水线操作——verilog练习与设计

文章目录 一、案例分析二、fifo_ctrl模块设计2.1 波形设计&#xff1a;2.2 代码实现2.2.1 fifo_ctrl2.2.2 顶层文件top_fifo_ctrl&#xff08;rx和tx模块省略&#xff09;2.2.3 仿真文件tb_fifo_ctrl 2.3波形仿真 一、案例分析 案例要求&#xff1a;写一个 fifo 控制器&#x…

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)对葡萄酒质量进行预测

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…