分割回文串

分割回文串

描述 :

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

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

题目 :

LeetCode 131.分割回文串 :

131. 分割回文串

分析 :
字符串如何判断回文本身就是一个道算法题,本题在其之上还要再解决一个问题: 如何切割? 如果暴力切割,是非常困难的,如果从回溯的角度来思考就清晰很多:

我们说回溯本身仍然会进行枚举,这里的也一样。切割线(就是图中的红线)切割到字符串的结尾位置,说明找到了一个切割方法。这里就是先试一试,第一次切a第二次切aa第三次切aab。这对应的就是回溯里的for循环,也就是横向方面。
我们还说回溯仍然会进行递归,这里也是一样的,第一次切了a剩下的就是“ab"。递归就是再将其再切-个回文下来,也就是第二个a,剩下的再交给递归进一步切。这就是纵向方面要干的事情,其他以此类推。
至于回溯操作与前面是一样的道理,不再整述。通过代码就可以发现,切割问题的回溯搜索的过程和组合问题的回溯搜索的过程是差不多的。

解析 :

class Solution {List<List<String>> list = new ArrayList<>();List<String> temp = new ArrayList<>();public List<List<String>> partition(String s) {dfs(s,0);return list;}public void dfs(String s,int start){if(start >= s.length()){list.add(new ArrayList(temp));return; }for(int i = start;i < s.length();i++){if(isString(s,start,i)){String tempString = s.substring(start,i + 1);temp.add(tempString);}else{continue;}dfs(s,i + 1);temp.remove(temp.size() - 1);}}public boolean isString(String s,int start,int end){for(int i = start, j = end;i < j;i++,j--){if(s.charAt(i) != s.charAt(j)){return false;}}return true;}
}

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

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

相关文章

20 Redis进阶 - 运维监控

1、理解Redis监控 Redis运维和监控的意义不言而喻&#xff0c;可以以下三个方面入手 1.首先是Redis自身提供了哪些状态信息&#xff0c;以及有哪些常见的命令可以获取Redis的监控信息; 2.一些常见的UI工具可以可视化的监控Redis; 3.理解Redis的监控体系;2、Redis自身状态及命…

Vue3-02-ref() 响应式详解

ref() 是什么 ref() 是一个函数&#xff1b; ref() 函数用来声明响应式的状态&#xff08;就是来声明变量的&#xff09; ref() 函数声明的变量&#xff0c;是响应式的&#xff0c;变量的值改变之后&#xff0c;页面中会自动重新渲染。ref() 有什么特点 1.ref() 可以声明基础…

VUE语法--toRefs与toRef用法

1、功能概述 ref和reactive能够定义响应式的数据&#xff0c;当我们通过reactive定义了一个对象或者数组数据的时候&#xff0c;如果我们只希望这个对象或者数组中指定的数据响应&#xff0c;其他的不响应。这个时候我们就可以使用toRefs和toRef实现局部数据的响应。 toRefs是…

算一算并输出2到正整数n中每个数的质因子(for循环)

计算并输出2到正整数n之间每个数的质因子&#xff0c;并以乘法形式输出。 输入格式: 输入只有1个正整数即n。 输出格式: 把2到正整数n间的每一个数分解成它的质因子&#xff0c;并以乘法的形式输出。例如&#xff0c;输入的正整数n值为10&#xff0c;则应输出如下&#xff…

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵&#xff0c;最小值打赏 28.正定矩阵&#xff0c;最小值 首先正定矩阵是一个实对称矩阵 由第 26 26 26讲的末尾可知正定矩阵有以下四种判定条件&#xff1a; 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&#xff08; 1 ≤ k ≤ n 1 \le k \le n …

DDD系列 - 第6讲 仓库Repository及Mybatis、JPA的取舍(一)

目录 一、领域层定义仓库接口1.1 设计聚合1.2 定义仓库Repository接口二 、基础设施层实现仓库接口2.1 设计数据库2.2 集成Mybatis2.3 引入Convetor2.4 实现仓库三、回顾一、领域层定义仓库接口 书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微…

简单的WEB服务器

优质博文&#xff1a;IT-BLOG-CN 目的&#xff1a; 了解Java Web服务器是如何运行的。Web服务器使用HTTP与其客户端&#xff0c;也就是Web浏览器进行通信。基于Java的Web服务器会使用两个重要类&#xff1a;java.net.Socket类和java.net.ServerSocket类&#xff0c;并通过发送…

详解Keras3.0 Models API: Model class

1、语法 keras.Model() 将不同层组为具有训练/推理特征的对象的模型 2、示例一 inputs keras.Input(shape(37,)) x keras.layers.Dense(32, activation"relu")(inputs) outputs keras.layers.Dense(5, activation"softmax")(x) model keras.Model…

58.Nacos源码分析2

三、服务心跳。 3.服务心跳 Nacos的实例分为临时实例和永久实例两种&#xff0c;可以通过在yaml 文件配置&#xff1a; spring:application:name: order-servicecloud:nacos:discovery:ephemeral: false # 设置实例为永久实例。true&#xff1a;临时; false&#xff1a;永久ser…

MySQL-备份+日志:介质故障与数据库恢复

目录 第1关&#xff1a;备份与恢复 第2关&#xff1a;备份日志&#xff1a;介质故障的发生与数据库的恢复 第1关&#xff1a;备份与恢复 任务描述 本关任务: 备份数据库&#xff0c;然后再恢复它。 test1_1.sh # 你写的命令将在linux的命令行运行 # 对数据库residents作海…

【C/C++笔试练习】多态的概念、虚函数的概念、虚表地址、派生类的虚函数、虚函数的访问、指针引用、动态多态、完全数计算、扑克牌大小

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;多态的概念&#xff08;2&#xff09;虚函数的概念&#xff08;3&#xff09;虚表地址&#xff08;4&#xff09;派生类的虚函数&#xff08;5&#xff09;虚函数的访问&#xff08;6&#xff09;分析程序&#xff08;7&…

C# WPF上位机开发(会员管理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 好多同学都认为上位机只是纯软件开发&#xff0c;不涉及到硬件设备&#xff0c;比如听听音乐、看看电影、写写小的应用等等。如果是消费电子&#…

HibernateJPA快速搭建

1. 先创建一个普通Maven工程&#xff0c;导入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depe…

Java 匿名内部类使用的外部变量,为什么一定要加 final?

问题描述 Effectively final Java 1.8 新特性&#xff0c;对于一个局部变量或方法参数&#xff0c;如果他的值在初始化后就从未更改&#xff0c;那么该变量就是 effectively final&#xff08;事实 final&#xff09;。 这种情况下&#xff0c;可以不用加 final 关键字修饰。 …

报错:Parsed mapper file: ‘file mapper.xml 导致无法启动

报错 &#xff1a; Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…

K8S学习指南(4)-minikube的使用

文章目录 简介安装 Minikube启动 Minikube 集群基本概念创建和管理资源1. 创建 Pod2. 创建 Deployment3. 创建 Service 监视和调试1. 查看集群状态2. 查看集群信息3. 访问 Kubernetes Dashboard4. 使用 kubectl 命令 清理资源1. 删除 Pod2. 删除 Deployment3. 删除 Service4. 停…

! [remote rejected] master -> master (pre-receive hook declined)

! [remote rejected] master -> master (pre-receive hook declined) 如图&#xff1a; 出错解决方法 首先输入命令 git branch xindefenzhi然后&#xff0c;进入这个新创建的分支 git checkout branch然后重新git push就可以了

爬虫学习-基础库的使用(urllib库)

目录 一、urllib库介绍 二、request模块使用 &#xff08;1&#xff09;urlopen ①data参数 ②timeout参数 &#xff08;2&#xff09;request &#xff08;3&#xff09;高级用法 ①验证 ②代理 ③Cookie 三、处理异常 ①URLError ②HTTPError 四、解析链接 ①urlparse ②…

LeetCode-10. 正则表达式匹配

LeetCode-10. 正则表达式匹配 问题分析算法描述程序代码CGo 问题分析 这道题的难点主要在于*号的匹配&#xff0c;这里记dp[i][j]表示s[1...i]和p[1...j]能否完成匹配&#xff0c;先根据特殊情况归纳总结&#xff1a; *号匹配 0 次&#xff0c;则dp[i][j] dp[i][j-2]*号匹配…

Mybatis源码解析4:获取Session、Mapper

Mybatis源码解析4&#xff1a;获取Session、Mapper 1.项目结构2. 源码分析2.1 获取Session DefaultSqlSessionFactory#openSession2.2 获取Mapper DefaultSqlSession#getMapper 1.项目结构 2. 源码分析 2.1 获取Session DefaultSqlSessionFactory#openSession private SqlSe…