算法通关村18关 | 回溯模板如何解决分割回文串问题

1. 分割回文串

题目

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

回文串是正着和反着读都是一样的字符串。

思路

知道回溯的模板,用回溯的角度思考就清晰很多:

切割线就是图中红线切割到字符串的结尾位置,

图中的第一次截取’a',第二次截取’aa',第三次截取'aab'。这对应的就是回溯里面,最外面的for循环,也就是横向方面。

我们还说回溯会仍然进行递归,这里也是一样的,第一次切了'a‘,剩下的就是'ab'。递归就是再将其再切一个回文下来,也就是第二个a,剩下的'b'再交给递归进一步切割,这也就是纵向方面要干的事情,其他依次类推。

代码

    List<List<String>> lists = new ArrayList<>();Deque<String> deque = new LinkedList<>();public List<List<String>> partition(String s){backTracking(s,0);return lists;}private void backTracking(String s, int startIndex){//如果起始位置大于s的大小,说明找到l一组分割方案if (startIndex >= s.length()){lists.add(new ArrayList<>(deque));return;}for (int i = startIndex; i < s.length(); i++) {//如果是回文字串,则记录if (isPalindrome(s,startIndex,i)){String str = s.substring(startIndex, i + 1);deque.addLast(str);}else {continue;}//起始位置后移,保证不重复,backTracking(s,i + 1);deque.removeLast();}}//判断是否是回文字符串private boolean isPalindrome(String s, int startIndex, int end){for (int i = startIndex, j = end; i < j; i++, j--) {if (s.charAt(i) != s.charAt(j)){return false;}}return true;}

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

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

相关文章

用python实现音乐下载

前言 本文背景 最近对音乐比较有需求&#xff0c;想着用自己学的python来实现一下下载需求&#xff0c; 真的是拿着锤子在满世界找钉子&#xff0c;**文末附全部代码**声明&#xff1a; 本文仅作技术交流&#xff0c;禁止用于其他非法途径本文2023年9月15日是可用的&#xff…

漫谈:C语言 值传递 函数参数 指针

C语言麻拐得很。 什么是变量&#xff1f;变量就是内存里面的一个东西&#xff0c;有值。 什么是“值传递”&#xff1f;C语言函数参数调用都是值传递&#xff0c;就是把变量的值给函数。 这里面一个大坑&#xff0c;就是函数参数究竟是什么&#xff1f;很多初学者对“值传递”、…

RUST 每日一省:全局变量

Rust中允许存在全局变量。它们一般有两种&#xff1a;常数和静态值。 常量 我们使用关键字 const 来创建常量。由于常量未使用关键字 let 声明&#xff0c;因此在创建它们时必须指定类型。常量只能进行简单赋值&#xff0c;并且没有固定的内存地址&#xff0c;无论它们在何处使…

Ubuntu 安装 Docker Engine

今天又装 docker 来着&#xff0c;看到英文官网上点来点去点进 Desktop 版本&#xff0c;而中文官网跳转安装网址有错误&#xff0c;所以写一下安装教程 ubuntu ubuntu 安装 docker engine 官网教程 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库&#xff1a; sudo …

2024字节跳动校招面试真题汇总及其解答(二)

1. 微服务的好处,划分原则 微服务是软件架构的一种模式,它将应用程序划分为一系列小型、独立的服务。每个服务都提供一个单独的功能,并使用轻量级的接口相互通信。 微服务架构具有以下好处: 灵活性:微服务可以独立部署、扩展和更新,这使得它们能够随着业务需求的变化而…

AI Studio星河社区生产力实践:基于文心一言快速搭建知识库问答

还在寻找基于文心一言搭建本地知识库问答的方案吗&#xff1f;AI Studio星河社区带你实战演练&#xff08;支持私有化部署&#xff09;&#xff01; 相信对于大语言模型&#xff08;LLM&#xff09;有所涉猎的朋友&#xff0c;对于“老网红”知识库问答不会陌生。自从大模型爆…

树和二叉树

1、树的定义2、树的基本术语3、二叉树的定义4、二叉树的性质和存储结构5、满二叉树、完全二叉树**完全二叉树的性质** 6、二叉树的存储顺序存储结构链式存储结构 7、遍历二叉树演示8、二叉树相关算法&#xff08;1&#xff09;遍历二叉树递归算法实现&#xff08;2&#xff09;…

【LeetCode-简单题】26. 删除有序数组中的重复项

文章目录 题目方法一&#xff1a;快慢指针 题目 方法一&#xff1a;快慢指针 class Solution { //快慢指针public int removeDuplicates(int[] nums) {int fast 1;int slow 0;while(fast < nums.length){if(nums[fast] nums[fast-1]) fast;//若当前元素和之前元素相同 则…

什么是卷积002

文章目录 前言1.卷积网络和传统网络区别2.卷积神经网络整体架构1.输入层2. 卷积层3.池化层4.全连接层 5.神经网络6.经典网络1.Alexnet2. Vgg3.Resnet 残差网络-特征提取 7.感受野 前言 大纲目录 首先链接图像颜色通道 1.卷积网络和传统网络区别 右边的就是CNN&#xff0c;卷…

线扫相机——机器视觉中无限制物体的检测(重要转载)

在机器视觉中&#xff0c;在检测连续物体或者滚动物体时&#xff0c;线扫相机是最佳的解决方案。通常&#xff0c;它们能提供很高的分辨率&#xff0c;因为它们要求很高的速度和数据率。 一、多条窄带拼成一副图像 线扫相机只抓取一行作为图像发送到电脑&#xff0c;主机电脑…

[NLP]LLM---大模型指令微调中的“Prompt”

一 指令微调数据集形式太多 大家有没有分析过 prompt对模型训练或者推理的影响&#xff1f;之前推理的时候&#xff0c;发现不加训练的时候prompt&#xff0c;直接输入模型性能会变差的&#xff0c;这个倒是可以理解。假如不加prompt直接训练&#xff0c;是不是测试的时候不加…

go-carbon 2.2.7 版本发布, 轻量级、语义化、对开发者友好的Golang时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…

将 Google Kubernetes Engine (GKE) 上稳定扩散的启动时间缩短 4 倍

Cloud Ace 是 Google Cloud 全球战略合作伙伴&#xff0c;在亚太地区、欧洲、南北美洲和非洲拥有二十多个办公室。Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位&#xff0c;并连续多次获得 Google Cloud 各类奖项。作为谷歌云托管服务商&#xff0c;我们提供谷歌…

构建健壮的Spring MVC应用:JSON响应与异常处理

目录 1. 引言 2. JSON 1. 轻量级和可读性 2. 易于编写和解析 3. 自描述性 4. 支持多种数据类型 5. 平台无关性 6. 易于集成 7. 社区支持和标准化 3. 高效处理异常 综合案例 异常处理方式一 异常处理方式二 异常处理方式三 1. 引言 探讨Spring MVC中关键的JSON数据…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】

linux配环境心得&#xff1a;conda/本地配cuda&#xff0c;cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一&#xff0c;服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

MySQL常见报错

1.语法错误&#xff1a;SQL syntax [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near (sno,con,degree) values (109,9-888,99) at line 1 2.未知列&#xff1a;查看表…

orcle数据库根据经纬度计算两个地点之间的距离

CREATE OR REPLACE FUNCTION Radian(d number) RETURN NUMBER is PI number :3.141592625;begin return d* PI/180.0; end ;--测试函数 select Radian(360) from dual;CREATE OR REPLACE FUNCTION GetDistance(lat1 number,lng1 number,lat2 number,lng2 number) RETURN NUMBE…

java高级:注解

目录 认识注解&自定义注解元注解解析注解注解的应用场景 认识注解&自定义注解 注解和反射一样&#xff0c;都是用来做框架的&#xff0c;我们这里学习注解的目的其实是为了以后学习框架或者做框架做铺垫的。 先来认识一下什么是注解&#xff1f;Java注解是代码中的特…

嵌入式学习笔记(31)异常向量表的编程处理

6.5.1像内存一样去访问异常向量表 &#xff08;1&#xff09;S5PV210的异常向量表可以改变&#xff08;在CP15协处理器中&#xff09;&#xff0c;以适应操作系统的需求。但是目前系统刚启动&#xff0c;此时DRAM尚未初始化&#xff0c;程序哦都市在iSRAM中运行。210在iSRAM中…

C++下基于粒子群算法解决TSP问题

粒子群优化算法求解TSP旅行商问题C&#xff08;2020.11.12&#xff09;_jing_zhong的博客-CSDN博客 混合粒子群算法&#xff08;PSO&#xff09;&#xff1a;C实现TSP问题 - 知乎 (zhihu.com) 一、原理 又是一个猜答案的算法&#xff0c;和遗传算法比较像&#xff0c;也是设…