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

131. 分割回文串 - 力扣(LeetCode)

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

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

输入示例

s = "aab"

输出示例

[["a","a","b"],["aa","b"]]

解题思路
我们使用回溯、深度优先遍历的思想,使用 ans 记录路径,使用 ret 记录路径组合结果,使用 f 数组记录是否回文,使用 n 记录字符串总数量。以下为核心递归逻辑,i 表示分割的开始位置:

  • 如果 i==n,表示已经分割到结尾,则将路径结果 ans 放入 ret。
  • 否则从 i 开始遍历分割,如果回文,将从 i 到 j 的子串放入路径
  • 继续从下一个位置开始分割递归
  • 执行回溯过程
    在这里插入图片描述

解题代码

class Solution {boolean[][] f;List<List<String>> ret = new ArrayList<>();List<String> ans = new ArrayList<>();int n;public List<List<String>> partition(String s) {n = s.length();f = new boolean[n][n];for(int i = 0; i < n; i++) {Arrays.fill(f[i], true);}for(int i = n-1; i >= 0; i--) {for(int j = i+1; j < n; j++) {f[i][j] = (s.charAt(i) == s.charAt(j)) && f[i+1][j-1];}}dfs(s, 0);return ret;}public void dfs(String s, int i) {if(i == n) {ret.add(new ArrayList<String>(ans));return;}for(int j = i; j < n; j++) {if(f[i][j]) {ans.add(s.substring(i, j + 1));dfs(s, j + 1);ans.remove(ans.size() - 1);}}}
}

相关文章:

  • Ubuntu使用docker-compose安装chatGPT
  • x-cmd pkg | yq - 命令行 YAML处理工具
  • 三国游戏(第十四届蓝桥杯)
  • ros2学习笔记-CLI工具,记录命令对应操作。
  • 杭州城市开发者年会——CMeet系列技术生态沙龙
  • 【unity学习笔记】语音驱动blendershape
  • ctfshow反序列化(web254-web266)
  • 响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-6 fieldset
  • HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参
  • Spring:StopWatch
  • 用ChatGPT从英文文本中批量提取特定单词
  • 【OCR项目】之用HALCON的深度学习工具进行文字识别,并导出到C++调用
  • USB转SPI USB转IIC 串口转SPI串口转IIC SPI I2C模块
  • Android13预装APP到data分区
  • PDF有编辑密码怎么办
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Java 网络编程(2):UDP 的使用
  • JAVA并发编程--1.基础概念
  • Java知识点总结(JavaIO-打印流)
  • Js基础知识(四) - js运行原理与机制
  • Mysql数据库的条件查询语句
  • nginx 配置多 域名 + 多 https
  • QQ浏览器x5内核的兼容性问题
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • windows下mongoDB的环境配置
  • 入门级的git使用指北
  • 通过git安装npm私有模块
  • FaaS 的简单实践
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 说说我为什么看好Spring Cloud Alibaba
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)STL算法之遍历容器
  • (3)(3.5) 遥测无线电区域条例
  • (3)STL算法之搜索
  • (6)添加vue-cookie
  • (C#)获取字符编码的类
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Framework杂记
  • .NET 中 GetProcess 相关方法的性能
  • .NET企业级应用架构设计系列之应用服务器
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [AIGC] MySQL存储引擎详解
  • [C++]类和对象【下】
  • [C++]拼图游戏
  • [dfs] 图案计数