当前位置: 首页 > news >正文

代码随想录刷题day50|(回溯算法篇)131.分割回文串▲

目录

一、回溯算法基础知识

二、分割回文串思路

2.1 如何切割

2.2 判断回文

2.3 回溯三部曲 

2.4 其他问题

三、相关算法题目

四、总结


一、回溯算法基础知识

详见:代码随想录刷题day46|(回溯算法篇)77.组合-CSDN博客

二、分割回文串思路

回溯递归法

两个问题:1.如何切割?2.判断回文?

2.1 如何切割

切割问题可以抽象成组合问题:取自代码随想录

如何模拟切割线

切割线通过startIndex和 i 来模拟,表示当前处理的子串范围;

2.2 判断回文

利用双指针法,一个从前往后遍历字符串s,另一个从后往前遍历字符串s,当两者不等时,不是回文,返回false;否则返回true;

2.3 回溯三部曲 

①函数参数和返回值:返回为空void,参数传入字符串s,以及每次递归遍历时的起始位置startIndex;

②终止条件:递归的深度,树的深度,何时结束递归:当切割到字符串的最后位置(s.length的位置)时,说明本次递归结束,将本次结果加入result结果集中,然后返回;

③单层递归逻辑:for循环中,startIndex 表示每次递归中开始遍历的起始位置,i 从startIndex开始,逐渐+1,那么[startIndex, i] 就是要截取的子串;得到子串以后,首先判断是否为回文,如果是,加入单个结果集 list 中,然后回退;如果不是,跳过本次循环,i++;

注意切割过的位置不能重复切割,所以递归中startIndex参数要传入 i+1;

2.4 其他问题

递归循环中如何截取子串?

通过String的substring方法👇

public String substring(int beginIndex, int endIndex)

返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

参数:beginIndex - 起始索引(包括);endIndex - 结束索引(不包括)。

示例:

"hamburger".substring(4, 8)   returns "urge"

"smiles".substring(1, 5)          returns "mile"

三、相关算法题目

131.分割回文串

class Solution {List<String> list = new ArrayList<>();//存放单个结果List<List<String>> result = new ArrayList<>();//存放结果集合public List<List<String>> partition(String s) {backtracking(s,0);return result;}private void backtracking(String s, int startIndex){//如果起始索引已经超过子串长度 说明分割完毕 得到结果if(startIndex >= s.length()){result.add(new ArrayList<>(list));return;}//单层递归逻辑for(int i = startIndex;i < s.length();i++){//提取从startIndex 到 i 的子串String substring = s.substring(startIndex, i + 1);//判断是否为回文if(isPalindrome(substring)){//是回文list.add(substring);backtracking(s, i+1);//递归处理剩余部分list.removeLast();//回溯 移除当前子串}}}//判断一个字符串是否是回文private boolean isPalindrome(String s){int left = 0;int right = s.length() - 1;while(left < right){if(s.charAt(left) != s.charAt(right)){return false;}left++;right--;}return true;}
}

四、总结

1.本题难点:理解分割回文串 类似 组合问题,也可以抽象成树的结构,深度代表递归的深度,宽度代表for循环;

2.切割的方式,也就是具体的树结构是什么样的?每一个节点;

3.终止条件,最后的叶子节点;

4.单层递归逻辑,每次截取的子串是哪里到哪里?

5.如何判断一个字符串是否为回文;

6.如何截取子串;

7.这真的是中等题目吗,自己想从一开始分割方式抽象成树结构就错咯😶

相关文章:

代码随想录刷题day50|(回溯算法篇)131.分割回文串▲

目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见&#xff1a;代码随想录刷题day46|&#xff08;回溯算法篇&#xff09;77.组合-CSDN博客 二、分割回文…...

SpringCloud 学习笔记3(OpenFeign)

OpenFeign 微服务之间的通信方式&#xff0c;通常有两种&#xff1a;RPC 和 HTTP。 简言之&#xff0c;RPC 就是像调用本地方法一样调用远程方法。 在 SpringCloud 中&#xff0c;默认是使用 HTTP 来进行微服务的通信&#xff0c;最常用的实现形式有两种&#xff1a; RestTem…...

Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全

Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全 在区块链世界里,透明性和不可篡改性是两大核心优势,但这也带来了一个悖论——如何在公开账本的同时保障用户隐私?如果你的交易记录对所有人可见,如何防止敏感信息泄露? Python 作为区块链开发中最受欢迎的…...

基于32单片机的无人机直流电机闭环调速系统设计

标题:基于32单片机的无人机直流电机闭环调速系统设计 内容:1.摘要 本文针对无人机直流电机调速需求&#xff0c;设计了基于32单片机的无人机直流电机闭环调速系统。背景在于无人机应用场景不断拓展&#xff0c;对电机调速精度和稳定性要求日益提高。目的是开发一套高精度、响应…...

QT 图表(拆线图,栏状图,饼状图 ,动态图表)

效果 折线图 // 创建折线数据系列// 创建折线系列QLineSeries *series new QLineSeries;// series->append(0, 6);// series->append(2, 4);// series->append(3, 8);// 创建图表并添加系列QChart *chart new QChart;chart->addSeries(series);chart->setTit…...

预测性维护:Ubuntu边缘计算机如何降低电梯故障率

在现代城市中&#xff0c;电梯作为垂直交通的重要工具&#xff0c;其运行状态直接关系到人们的出行安全和效率。传统的电梯监控系统往往依赖于中心化的数据处理&#xff0c;存在响应慢、数据量大、实时性差等问题。而边缘协议网关&#xff08;Edge Protocol Gateway&#xff09…...

MyBatis plus详解

核心功能 代码生成器 它能够依据数据库表结构&#xff0c;自动生成涵盖实体类、Mapper 接口、Mapper XML 文件、Service 接口与实现类等在内的基础代码。开发人员只需简单配置数据库连接信息、表名以及生成代码的相关参数&#xff0c;即可快速生成符合项目规范的基础代码&…...

【数据挖掘】数据预处理——以鸢尾花数据集为例

数据预处理——以鸢尾花数据集为例 一、实验手册&#xff08;一&#xff09;实验目的&#xff08;二&#xff09;实验原理&#xff08;三&#xff09;实验环境&#xff08;四&#xff09;实验步骤&#xff08;五&#xff09;实验报告要求 二、案例代码&#xff08;以鸢尾花数据…...

根据文件名称查询文件所在位置

在 Linux 中&#xff0c;根据文件名称查询文件所在位置主要通过命令行工具实现&#xff0c;以下是几种常用方法&#xff1a; --- ### **1. 使用 find 命令&#xff08;最灵活&#xff09;** find 命令可以递归搜索指定目录下的文件&#xff0c;支持按名称、类型、时间等条件过…...

记一次wsl2+docker无法运行的经历

前情提要 由于某个大创项目的需要和对猫娘机器人的迫切渴求&#xff08;bushi 需要在电脑里面安装docker desktop。由于电脑里面安装了wsl2环境 因此决定使用wsl2dockerdesktop的方式配置docker 遇到的问题 在像往常一样安装docker desktop并且启动时 提示错误&#xff1a; …...

XSS介绍通关XSS-Labs靶场

目录 XSS XSS的类型 1.存储型XSS&#xff08;PXSS&#xff09;&#xff1a; 2. 反射型XSS&#xff08;N-PXSS&#xff09;&#xff1a; 3. DOM型XSS&#xff1a; 4. 突变型XSS&#xff08;mXSS&#xff09;&#xff1a; 5. 通用型XSS&#xff08;UXSS&#xff09;&#x…...

枚举的定义及其使用

在Java中&#xff0c;enum&#xff08;枚举&#xff09;是一个特殊的类&#xff0c;用于表示一组常量。enum类型在Java中提供了一种类型安全的方式来定义常量&#xff0c;相比传统的常量&#xff08;如public static final变量&#xff09;&#xff0c;它更加简洁、类型安全&am…...

[特殊字符][特殊字符][特殊字符][特殊字符][特殊字符][特殊字符]壁紙 流光染墨,碎影入梦

#Cosplay #&#x1f9da;‍♀️Bangni邦尼&#x1f430;. #&#x1f4f7; 穹妹 Set.01 #后期圈小程序 琼枝低垂&#xff0c;霜花浸透夜色&#xff0c;风起时&#xff0c;微光轻拂檐角&#xff0c;洒落一地星辉。远山隐于烟岚&#xff0c;唯余一抹青黛&#xff0c;勾勒出天光水…...

996引擎-接口测试:消息Tips

996引擎-接口测试:消息Tips 发送视野内广播消息 sendrefluamsg发送聊天框消息 sendmsg发送地图消息 sendmapmsg打印消息到控制台 release_print发送自定义颜色的文字信息 guildnoticemsg测试NPC参考资料发送视野内广播消息 sendrefluamsg function npc_test_onclick1(player)-…...

Redis设计与实现-底层实现

Redis底层实现 1、事件1.1 文件事件1.2 时间事件1.3 事件调度 2、Redis客户端2.1 客户端的相关属性2.2 客户端的创建与关闭2.2.1 普通客户端的创建2.2.2 普通客户端的关闭2.2.3 AOF的伪客户端2.2.4 Lua脚本的伪客户端 3、Redis服务端3.1 命令请求的执行过程3.1.1 客户端发送命令…...

acwing1295. X的因子链

题目链接&#xff1a;1295. X的因子链 - AcWing题库 算法&#xff1a;数论线性筛法求素数 x如果想要尽可能多的分为几个因子&#xff0c;那么就应该分成素数&#xff0c;因为如果是合数说明还能分。 题目要求求出①这段序列的最大长度和②最大长度序列的个数 最大长度&#x…...

练习-班级活动(map存储键值对)

问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学&#xff0c;老师想把所有的同学进行分组&#xff0c;每两名同学一组。为了公平&#xff0c;老师给每名同学随机分配了一个 n 以内的正整数作为 id&#xff0c;第 i 名同学的 id 为 ai​。 老师希望…...

34-三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 方法一&…...

Excel online开始支持Copilot高级数据分析:Python提供强大的数据见解

前文讲过Excel中的copilot可以直接调用Python进行高级数据分析&#xff1a; Copilot&#xff1a;Excel中的Python高级分析来了 Python in Excel高级分析&#xff1a;一键RFM分析 超越DeepSeek&#xff1a;Copilot in Excel高级数据分析原生支持Python无需安装软件 零代码、…...

【数据结构】kmp算法介绍+模板代码

目录 1.kmp算法介绍 2.应用场景 3.KMP与暴力算法比较 4.模板代码 KMP算法是一种高效的字符串匹配算法&#xff0c;用于在文本串中快速查找模式串的所有出现位置。其核心思想是通过预处理模式串&#xff0c;避免在匹配失败时进行不必要的回溯&#xff0c;从而将时间复杂度优…...

python关键字汇总

文章目录 1. 变量与类型相关2. 控制流相关3. 函数与类相关4. 异常处理相关5. 模块相关6. 其他 在 Python 3 里有 35 个关键字&#xff0c;它们各自具备特定的用途与意义 1. 变量与类型相关 True、False 意义&#xff1a;布尔类型的常量&#xff0c;分别代表逻辑真与逻辑假。示…...

六十天前端强化训练之第二十五天之组件生命周期大师级详解(Vue3 Composition API 版)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、生命周期核心知识 1.1 生命周期全景图 1.2 生命周期钩子详解 1.2.1 初始化阶段 1.2.2 挂载阶段 1.2.3 更新阶段 1.2.4 卸载阶段 1.3 生命周期执行顺序 1.4 父子组…...

油候插件、idea、VsCode插件推荐(自用)

开发软件&#xff1a; 之前的文章&#xff1a; 开发必装最实用工具软件与网站 推荐一下我使用的开发工具 目前在用的 油候插件 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 让查询变成多列&#xff0c;而且可以流式翻页 Github 增强 - 高速下载 github下载 TimerHo…...

R语言基于ggscitable包复现一篇3.5分的文章的连续变量交互效应(交互作用)的可视化图

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;进行可视化后可以清晰的表明变量之间的关系。不仅如此&#xff0c;交互作用还可以使用来进…...

mac环境下chatwoot客服聊天docker本地部署+对接通义千问Qwen2.5

&#x1f680; 安装docker-desktop &#x1f680; 定义一个.env环境变量文件docker-compose.yaml .env # Learn about the various environment variables at # https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#rails-production-variables…...

mac上安装nvm及nvm的基本语法使用!!

种一棵树&#xff0c;最好是十年前&#xff0c;其次是现在&#xff01;想要改变&#xff0c;从此刻开始&#xff0c;一切都不晚&#xff01; 目录 nvm是什么&#xff1f;前提条件&#xff1a;安装homebrew如果系统已经有node版本&#xff1a;在mac上安装nvm&#xff1a;用nvm安…...

论文阅读:2024-NAACL Semstamp、2024-ACL (Findings) k-SemStamp

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Semstamp: A semantic watermark with paraphrastic robustness for text generation https://aclanthology.org/2024.naacl-long.226/ k-SemStamp: A Clustering-Based Semantic Wate…...

本地JAR批量传私服

在有网络隔离的环境下&#xff0c;Maven项目如果没有搭建私服就得把用到的通用组件通过U盘在每个组员间拷贝来拷贝去。非常的麻烦跟低效。搭建私服&#xff0c;如果通用组件很多的时候手工一个一个上传更是非常的麻烦跟低效&#xff1b; 我就遇上这问题&#xff0c;跟A公司合作…...

Linux上位机开发实战(camera视频读取)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 关于linux camera&#xff0c;一般都是认为是mipi camera&#xff0c;或者是usb camera。当然不管是哪一种&#xff0c;底层的逻辑都是v4l2&#x…...

OpenCV图像处理基础1

OpenCV 提供了丰富的图像处理和计算机视觉功能,包括图像读取、显示、颜色空间转换、滤波、边缘检测、轮廓检测等。 本章将介绍 OpenCV 的基本概念和常用功能。 图像的表示和处理 OpenCV 通过 NumPy 数组 来表示图像数据,每个图像就是一个多维数组,其中每个元素对应图像中的…...

Python Web 框架 Django、Flask 和 FastAPI 对比

在探索 Python Web 框架时&#xff0c;Django、Flask 和 FastAPI 无疑是最常被提及的名字。根据我们最新的 Python 开发者调查&#xff0c;这三大框架继续稳坐后端 Web 开发的热门宝座。它们均为开源项目&#xff0c;并且与 Python 的最新版本无缝兼容。然而&#xff0c;面对不…...

TISAX认证注意事项的详细介绍

TISAX&#xff08;Trusted Information Security Assessment Exchange&#xff09;认证的注意事项犹如企业在信息安全领域航行时必须遵循的灯塔指引&#xff0c;至关重要且不容忽视。以下是对TISAX认证注意事项的详尽阐述&#xff1a; 首先&#xff0c;企业需深入研读并理解TI…...

JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源&#xff1a;在这位大佬的基础上添加了一些东西&#xff0c;欢迎大家支持原创&#xff0c;大佬太棒了&#xff1a;JavaScript |&#xff08;六&#xff09;DOM事件 | 尚硅谷JavaScript基础…...

【动态规划】详解混合背包问题

目录 1. 前置文章2. 题目3. 小结 1. 前置文章 本文前置文章&#xff1a; 【动态规划】详解 0-1背包问题【动态规划】详解完全背包问题【动态规划】详解分组背包问题【动态规划】详解多重背包问题 下面是三种背包模式的区别&#xff1a; 0 - 1 背包 是说&#xff1a;有 n 个…...

Nodejs 项目打包部署方式

方式一&#xff1a;PM2 一、准备工作 确保服务器上已安装 Node.js 环境建议使用 PM2 进行进程管理&#xff08;需要额外安装&#xff09; 二、部署步骤 1.首先在服务器上安装 PM2&#xff08;推荐&#xff09;&#xff1a; npm install -g pm22.将项目代码上传到服务器&…...

银河麒麟操作系统的上下游版本判断

以下内容摘自《银河麒麟操作系统进阶应用》一书。 几百款Linux发行版之间并不是完全独立的&#xff0c;绝大多数Linux发行版可以追溯到几个关键的“祖先”发行版&#xff0c;其中最为人熟知的包括Debian、Fedora、Slackware和Arch Linux。这些“祖先”发行版又称“原始”发行版…...

Retrofit中scalars转换html为字符串

简介 在Retrofit中&#xff0c;如果你想直接获取HTML或其他文本格式的响应内容而不是将其映射到一个模型类&#xff0c;ScalarsConverterFactory 就派上用场了。ScalarsConverterFactory 是一个转换器工厂&#xff0c;它能够将响应体转换为Java基本类型如String、Integer或Byte…...

Java基础面试题学习

转换成自已的语言来回答&#xff0c;来源小林coding、沉默王二以及其它资源和自已改编。 1、概念 1、说一下Java的特点 我认为Java有很多特点 首先是平台无关性&#xff1a;Java可以实现一次编译到处运行&#xff0c;因为Java的编译器将源代码编译成字节码&#xff0c;使得该…...

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中&#xff0c;数据是核心资产。然而&#xff0c;虽然许多网站的文本内容可以免费访问&#xff0c;但手动一条一条采集&#xff0c;不仅耗时耗力&#xff0c;还容易出错。这种情况下&#xff0c;使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…...

【工具变量】全国地级市地方ZF债务数据集(2014-2023年)

地方ZF债务是地方财政运作的重要组成部分&#xff0c;主要用于基础设施建设、公共服务及经济发展&#xff0c;是衡量地方财政健康状况的重要指标。近年来&#xff0c;我国地级市的地方ZF债务规模不断变化&#xff0c;涉及一般债务和专项债务等多个方面&#xff0c;对金融市场、…...

6.5840 Lab 3: Raft

论文很重要 raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn GitHub Part 3A: leader election (moderate) 十次test都过了 实现 Raft 的领导者选举和心跳机制&#xff08;AppendEntries RPC&#xff0c;无日志条目&#xff09;。第 3A 部分的目标是实现以下功能&am…...

DCDC36V同步降压 输出可调 2A电流恒压芯片SL1588H 替换LV3842

在当今电子设备飞速发展的时代&#xff0c;电源管理芯片的性能优劣直接关乎设备的稳定性与高效运行。对于诸多需要将 36V 电压进行同步降压、输出电压可调且稳定输出 2A 电流的应用场景&#xff0c;一款卓越的恒压芯片不可或缺。SL1588H 正凭借其领先的技术和出色的性能&#x…...

AH4953A双PMOS管深度解析:无线充系统的“高效开关”设计实践

AH4953 30v5A双PMOS管深度解析&#xff1a;无线充系统的“高效开关”设计实践 1. 产品定位与基础特性 AH4953A双通道P沟道MOSFET&#xff0c;专为无线充电、电源管理等高频开关场景优化。其核心优势体现在&#xff1a; • 高耐压低损耗&#xff1a;30V漏源电压&#xff08;Vd…...

图数据库Neo4j和JDK安装与配置教程(超详细)

目录 前言 一、Java环境配置 &#xff08;一&#xff09;JDK的下载与安装 &#xff08;二&#xff09;JDK环境配置 &#xff08;三&#xff09;检测JDK17是否配置成功 二、Neo4j的安装与配置 &#xff08;一&#xff09;Neo4j的下载与安装 &#xff08;二&#xff09;N…...

现代美学工业风品牌海报徽标设计PSAI无衬线英文字体安装包 Moldin – Condensed Sans Serif Font

现代几何工业风品牌海报徽标设计无衬线英文字体安装包 Moldin — Condensed Sans Serif Font Moldin 是一个粗体浓缩的无衬线字体系列&#xff0c;旨在为显示和标题提供最大的影响。Moldin 有 6 种粗细可供选择&#xff0c;从常规到黑色&#xff0c;提供静态和可变格式&#x…...

Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式

目录 数组与数组函数office365中VLOOKUP函数的加强数组中的多条件判断FILTER函数详解用法概述函数语法 基础筛选多条件筛选进阶技巧结合动态数组 高级函数整合错误处理注意事项FILTER经典问题&#xff1a;一对多查询 XLOOKUP函数XLOOKUP基础用法XLOOKUP函数多条件匹配和双向查询…...

django入门教程之request和reponse【二】

接上节&#xff1a;入门【一】 再创建一个orders子应用&#xff0c;python manager.py startapp orders&#xff0c;orders目录中新建一个urls.py文件。结构如图&#xff1a; 通过上节课&#xff0c;我们知道在views.py文件中编写函数时&#xff0c;有一个默认入参request&…...

第十五次CCF-CSP认证(含C++源码)

第十五次CCF-CSP认证 小明上学满分思路 数据中心满分思路 小明放学满分题解 小明上学 题目链接 满分思路 其实题目看着长&#xff0c;但是做起来是非常好写的&#xff0c;其实主要原因在于&#xff0c;他的红绿灯的变化规律是一定的&#xff0c;而且小明路上的每次红绿灯情况…...

Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框

单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的&#xff0c;如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…...

混合精度-基于torch内部

定义 混合精度训练是一种在深度学习模型训练过程中&#xff0c;同时使用不同精度数据类型&#xff08;主要是单精度 FP32 和半精度 FP16&#xff09;来进行计算和存储的技术。以下是具体介绍&#xff1a; 数据类型&#xff1a; 单精度&#xff08;FP32&#xff09;&#xff1…...