Day66 代码随想录打卡|回溯算法篇---分割回文串

news2025/5/31 19:18:00

题目(leecode T131):

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

方法:本题是一个分割回文串的问题,是回溯算法的另一类问题。 针对一个字符串,我们要对其进行分割,并且确保分割后生成的子串也必须全都是回文串。分析回溯三部曲

1:传入参数与返回值:传入字符串s,以及切割的起始位置startIndex,不需要返回值

2:终止条件:因为切割位置startIndex控制的是切割的起始位置,当startIndex大于等于s.size时,就意味着已经切到了最后,也就该停止了。

3:单层处理逻辑:在单层中我们需要从字符串中截取子串。

for (int i = startIndex; i < s.size(); i++)循环中,我们 定义了起始位置startIndex,那么 [startIndex, i] 就是要截取的子串。

首先判断这个子串是不是回文,如果是回文,就加入在vector<string> path中,path用来记录切割过的回文子串。

题解:
 

class Solution {
private:
    vector<string> path;
    vector<vector<string>> result;
    void backtracking(const string& s,int startIndex){
        if(startIndex >= s.size()){             //终止条件
            result.push_back(path);
            return;
        }
        for(int i = startIndex; i < s.size(); i++){
            if(isPalindrome(s, startIndex, i)){
                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;
    }
};

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

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

相关文章

oak相机使用oak官网方式标定

目录 一、depthai ROS驱动 一、depthai ROS驱动 &#xff08;1&#xff09;驱动下载地址&#xff1a;2. C 开发快速上手 — DepthAI Docs 0.3.0.0 documentation sudo apt install ./depthai_2.17.1_arm64.deb //运行 Python3 utilities/cam_test.py -mres 400 -cams rgb,m …

【2】kettle使用的小细节——输出数据分发和复制

在进行地铁数据清洗时&#xff0c;遇到3组线路&#xff1a; 出现的问题&#xff1a;程序运行到 增加序列 组件还有396条数据记录&#xff0c;但是在排序记录中只有 132条数据&#xff0c;即对3条线路进行了分发&#xff0c;各发送了132条数据。 断开这三条连接&#xff0c;重新…

对智能的研究正在悄悄地诱发复杂取代科学

随着智能人工智能的发展&#xff0c;传统科学研究方法可能面临新的挑战或者被扩展。人工智能的发展带来了大数据分析、机器学习、深度学习等新的工具和方法&#xff0c;这些方法在处理复杂系统和大规模数据方面表现出色&#xff0c;使得科学研究变得更加多样化和复杂化。对智能…

市面上护眼台灯哪个牌子最好?五款必须入手的护眼台灯分享

护眼台灯最终都绕不开护眼这个话题。护眼灯作为保护视力的辅助工具&#xff0c;以有效护眼的价值深受大众青睐。学生长时间用眼&#xff0c;普通台灯的伤害大&#xff0c;而护眼台灯的出现&#xff0c;通过其先进的技术和设计&#xff0c;能为学生提供了一个既舒适又健康的照明…

WPF/C#:在WPF中如何实现依赖注入

前言 本文通过 WPF Gallery 这个项目学习依赖注入的相关概念与如何在WPF中进行依赖注入。 什么是依赖注入 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;用于实现控制反转&#xff08;Inversion of Control&#xff0…

Python高层神经网络 API库之Keras使用详解

概要 随着深度学习在各个领域的广泛应用,许多开发者开始使用各种框架来构建和训练神经网络模型。Keras 是一个高层神经网络 API,使用 Python 编写,并能够运行在 TensorFlow、CNTK 和 Theano 之上。Keras 旨在简化深度学习模型的构建过程,使得开发者能够更加专注于实验和研…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab&#xff0c;通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤&#xff1a; 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…

一文清晰了解表格表单

一、表格 要想实现下述内容&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"GBK"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第59-agent自动获取喵星人资讯并保存至云文件夹

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第59-agent自动获取喵星人资讯并保存至云文件夹 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由Java…

springboot仪器校准系统-计算机毕业设计源码51504

摘 要 随着科技的不断发展。测量设备的准确性和可靠性对于各行各业都至关重要。仪器校准系统作为确保测量设备性能的重要手段&#xff0c;已成为工业生产、科学研究、质量控制等领域不可或缺的一部分。本文对仪器校准系统进行了概述&#xff0c;探讨了校准方法、流程、特点、应…

等保2.0丨5分钟速览:小白都能理解的等保2.0简介

等保2.0的概念 等保2.0全称网络安全等级保护2.0制度&#xff0c;是我国网络安全领域的基本国策、基本制度。以1.0的规范为基础&#xff0c;等级保护标准以积极的防御为重点&#xff0c;由被动的防御发展为安全可信、动态感知和全过程的事前、事中和事后的全过程的全方位的审核…

解决MCM功率电源模块EMC的关键

对MCM功率电源而言&#xff0c;由于其工作在几百kHz的高频开关状态&#xff0c;故易成为干扰源。电磁兼容性EMC&#xff08;Electro Magnetic Compatibility&#xff09;&#xff0c;是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的…

STM32 - DOG看门狗笔记

WDG&#xff08;Watchdog&#xff09;看门狗 作用&#xff1a; 看门狗可以监控程序的运行状态&#xff0c;当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xff0c;避免程序陷入长时间的罢工状态&#x…

蓝队必备技能--yara-让自己编写AVVT

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

STM32G4 DMA的使用(寄存器开发)

下面以STM32G474为例&#xff0c;使用DMA来存储USART1的接收数据。 1. 查看硬件支持 首先查看要使用的DMA支持的通道数&#xff0c;在手册中有如下说明。 根据上图可以看到&#xff0c;对于不同的设备类型有不同的DMA通道数量。设备类型分类如下图所示。 我使用的是STM32G474…

springboot乡镇医院管理系统-计算机毕业设计源码51697

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2研究现状 1.3论文结构与章节安排 2 SpringBoot乡镇医院管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3…

spark基于Spark的对招聘信息的分析与设计-计算机毕业设计源码50716

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.2.1 数据新增流程 2.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设计 3.1 系统架构设…

大模型之战进入新赛季,开始卷应用

最近一段时间&#xff0c;国产大模型Kimi彻底火了&#xff0c;而这波爆火&#xff0c;某种意义上也展示了一个问题&#xff0c;即大模型的落地场景可能比技术比拼&#xff0c;更重要。 国产大模型Kimi突然爆火&#xff0c;与Kimi相关的产业链甚至被冠上“Kimi概念股”之名&…

MES系统助力塑料制品行业数字化转型

注塑MES系统助力工厂生产力提升具体体现在&#xff1a;覆盖生产全流程&#xff1b;数据自动收集、科学规划排产&#xff1b;优化配送模型、平衡物流运转&#xff1b;严格把控品质、异常自动分析&#xff1b;实时监控设备&#xff0c;保证正常运转&#xff1b;产品快速追溯&…

uniapp 九宫格抽奖

<template><view class"container"><view class"navleft" click"navback"><image src"/static/cj/left.png" mode""></image></view><view class"navtitle">抽奖</…