Leetcode 131.分割回文串 回溯 C++实现

news2024/9/21 11:50:31

Leetcode 131. 分割回文串

问题:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

算法:

创建二维返回数组 ans ,和临时数组 path

进入 dfs 函数,当 i==n 时,证明已经递归到最后一个元素,执行完就可以 return 。从 i 到末尾,如果是回文就加入到 path 数组中,然后进入下一层递归。递归结束后将 path 存入返回数组 ans 中,最后恢复现场准备进入下一次递归。

代码:

class Solution {
    // 判断是否是回文字符串
    bool isPalindrome(string& s,int left,int right){
        while(left < right)
            if(s[left++] != s[right--]) return false;
        return true;
    }
public:
    vector<vector<string>> partition(string s) {
        vector<vector<string>> ans;// 返回数组ans
        vector<string> path;// 临时数组path
        int n = s.length();// 字符串s的长度n

        auto dfs = [&](auto&& dfs,int i){
            if(i == n){// 结束
                ans.emplace_back(path);
                return ;
            }
            for(int j = i;j < n;j++){
                if(isPalindrome(s,i,j)){
                    path.push_back(s.substr(i,j - i + 1));
                    dfs(dfs,j + 1);// 进入下一层递归
                    path.pop_back();// 恢复现场
                }
            }
        };
        dfs(dfs,0);// 递归入口
        return ans;
    }
};

p.s. string.substr( a , b )    :   从 string 的第 a 个位置开始,连续读取 b 个数量的字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识linux(1)

linux背景 1991年10月5日&#xff0c;赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组 &#xff08;comp.os.minix&#xff09;中宣布他编制出了一种类似UNIX的小操作系统&#xff0c;叫Linux。新的操作系统是受到另 一个UNIX的小操作系统——Minix的启发…

今日arXiv最热大模型论文:港大微软发布AgentGen提高大模型规划能力,8B模型接近GPT-4水平

夕小瑶科技说 原创 作者 | Richard 在大语言模型&#xff08;LLM&#xff09;问世之后&#xff0c;基于 LLM 的 Agent 引起了广泛的关注并且变得越来越流行。规划能力无论对人类还是 Agent 都是一个重要的决策步骤&#xff0c;规划的本质是通过预先设定的行动过程&#xff0c…

软件设计师全套备考系列文章20 -- UML建模(重点,15分)

软考-- 软件设计师&#xff08;20&#xff09;-- UML建模(重点&#xff0c;15分) 文章目录 软考-- 软件设计师&#xff08;20&#xff09;-- UML建模(重点&#xff0c;15分)前言一、章节考点二、概述三、类图四、用例图五、顺序图六、活动图七、状态图八、通信图九、构建图 前言…

扫码点餐系统的前景如何?

扫码点餐系统作为一种餐饮业数字化转型的关键工具&#xff0c;其发展前景广阔。随着移动支付和智能手机的普及&#xff0c;该系统在餐厅、咖啡馆、快餐店等场所得到广泛应用&#xff0c;不仅简化了顾客点餐流程&#xff0c;减轻了服务员的工作负担&#xff0c;还提高了翻台率。…

沃尔玛停止在 3 个城市使用无人机送货,将重点转移到达拉斯

沃尔玛&#xff0c;作为全球领先的零售商&#xff0c;一直在探索创新的物流解决方案以提升顾客体验。近年来&#xff0c;该公司与无人机送货服务提供商DroneUp合作&#xff0c;尝试通过无人机技术实现快速配送服务。然而&#xff0c;经过一段时间的试点运营后&#xff0c;沃尔玛…

输电线路分布式故障诊断系统:分布式智慧网络的构建

输电线路分布式故障诊断系统&#xff1a;分布式智慧网络的构建 今天&#xff0c;就让深圳鼎信智慧科技陪大家一起走进输电线路分布式故障定位系统的世界&#xff1a; 1、系统架构&#xff1a;分布式智慧网络的构建 输电线路分布式故障定位系统主要由三大核心部分组成&#x…

微服务|一文带你了解无感知部署方案实战

目录 一、现有部署方案介绍 二、Nacos 介绍 三、影响时间的因素 四、方案目录结构 五、方案脚本实现 六、遇到的问题及优化 七、其他替代方案 一、现有部署方案介绍 在程序开发和运维过程中&#xff0c;会频繁地部署服务&#xff0c;并且每个服务的正常运行都依赖于其他服…

Springboot @RestControllerAdvice全局异常捕获处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、RestControllerAdvice二、案例1.自定义异常2.自定义相应常量3.自定义响应类4.核心逻辑5.测试 一、RestControllerAdvice RestControllerAdvice是Spring框架提供…

Linux网络:网络基础

Linux网络&#xff1a;网络基础 一、网络诞生背景及产生的诸多问题1. 1 网络诞生背景1.2 网络诞生面临的困境 二、网络协议栈&#xff08;OSI七层模型、CP/IP五层模型&#xff09;2.1 TCP/IP五层(或四层)模型 三、网络和系统关系四、网络传输流程4.1 同一个局域网中的两台主机进…

idea调试启动项目控制台日志卡住不动的解决方案

报错 可能是你有debug没有清除&#xff0c;导致的启动卡住&#xff0c;给清楚掉即可

开学季有哪些必备的好物?学生家长请收下这份清单

随着新学期的脚步日益临近&#xff0c;每位学生和家长都在积极准备迎接新的挑战与机遇。为了帮助孩子们更好地适应校园生活&#xff0c;营造一个健康、高效的学习环境&#xff0c;我们精心挑选了一系列实用且能够提升学习体验的产品。从舒适的护眼台灯到高效的智能学习工具&…

mysql面试题(一)

附件&#xff1a;对mysql知识点描述比较全的博客 https://blog.csdn.net/laodanqiu/article/details/131563200 原题 为方便表达&#xff0c;将创建两个表 mysql> select * from customer; ----------------------------------------------------- | customer_id | custo…

用于目标说话人提取的统一视听线索

第二章 目标说话人提取之《Unified Audio Visual Cues for Target Speaker Extraction 》 文章目录 前言一、任务二、动机三、挑战四、方法1.总体架构2.tes网络3. 融合网络4.损失函数 五、实验评价1.数据集2.消融实验3.客观评价4.主观评价 六、结论七、知识小结 前言 语音新手…

航空制造领域中三维工艺技术的应用

飞机制造企业可以通过三维数字化技术的应用有效提升了工艺设计水平&#xff0c;解决了在航空产品数字化工艺设计、制造方面的标准统一和系统整合等问题&#xff0c;保证了业务应用系统基础数据的一致性和规范性。本文是对航空制造领域中三维工艺技术的应用的介绍。 随着信息化技…

冒泡排序详细说明(内含动态演示图)

冒泡排序 冒泡排序的核⼼思想就是&#xff1a;两两相邻的元素进行比较。冒泡排序是⼀种最基础的交换排序。 之所以叫做冒泡排序&#xff0c;因为每⼀个元素都可以像小⽓泡⼀样&#xff0c;根据⾃⾝⼤⼩⼀点⼀点向数组的⼀侧移动。 //⽅法1 void bubble_sort(int arr[], int…

前端开发学习Docker记录01镜像操作

Docker相关命令 Demo安装nginx 先搜索然后拉取&#xff0c;然后查看images列表是不是拉取成功 docker search nginxdocker pull nginx特定某个版本&#xff0c;镜像名&#xff1a;版本号 docker images

这个神奇的网站提供各种图的R代码供您参考!

点击去每一个都有代码和数据 ggplot2高效实用指南 (可视化脚本、工具、套路、配色) 50个ggplot2可视化案例

国产游戏技术能否引领全球

目录 1.概述 1.1.面临的挑战 1.2.机遇 1.3.IT技术创新如何推动行业发展 2.技术解析 2.1.图形渲染技术 2.2.物理引擎 2.3.人工智能 (AI) 3.行业影响 3.1.对国内游戏开发行业的影响 3.2.IT人才需求变化 3.3.技术发展方向 4.未来展望 4.1. 发展前景 4.2. IT技术人员…

根据Scrum 敏捷开发过程开发一个基于 Web 的 Scrum 项目管理系统

目录 案例 【题目】 【问题 1】(10 分) 【问题 2】(6 分) 【问题 3】(9 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Scrum 敏捷开发过程的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 Scrum 是一个增量…

【使用 Python 进行截图】

如何使用 Python 进行截图&#xff1f; Python 是一种广泛使用的通用编程语言。它可以执行各种任务。其中之一就是进行截图。它提供了一个名为“pyautogui”的模块&#xff0c;可以用于截图。“pyautogui”截取的图片是 PIL&#xff08;Python 图像库&#xff09;格式&#xf…