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

LeetCode Hot100 131.分割回文串

题目

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

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

方法灵神-子集型回溯

假设每对相邻字符之间有个逗号,那么就看每个逗号是选还是不选

也可以理解成:是否要把 s[i]s[i]s[i] 当成分割出的子串的最后一个字符。

代码:

class Solution {private final List<List<String>> ans = new ArrayList<>();private final List<String> path = new ArrayList<>();private String s;public List<List<String>> partition(String s) {this.s = s;dfs(0, 0);return ans;}private boolean isPalindrome(int left, int right) {while (left < right) {if (s.charAt(left++) != s.charAt(right--))return false;}return true;}// start 表示当前这段回文子串的开始位置private void dfs(int i, int start) {if (i == s.length()) {ans.add(new ArrayList<>(path));return;}// 不选 i 和 i + 1 之间的逗号(i = n - 1 时一定要选)if (i < s.length() - 1)dfs(i + 1, start);// 选 i 和 i + 1 之间的逗号(把 s[i] 作为子串的最后一个字符)if (isPalindrome(start, i)) {path.add(s.substring(start, i + 1));dfs(i + 1, i + 1);              // 下一个子串从 i+1 开始path.remove(path.size() - 1);   // 恢复现场}}
}

http://www.lryc.cn/news/256137.html

相关文章:

  • SAP UI5 walkthrough step9 Component Configuration
  • 【数据结构和算法】--- 栈
  • CentOS7.0 下rpm安装MySQL5.5.60
  • 智慧能源:数字孪生压缩空气储能管控平台
  • 【链表OJ—反转链表】
  • TCP一对一聊天
  • 基于Java的招聘系统的设计与实现
  • spring boot整合mybatis进行部门管理管理的增删改查
  • 微软 Power Platform 零基础 Power Pages 网页搭建高阶实际案例实践(四)
  • 如何在任何STM32上面安装micro_ros
  • 肖sir__ 项目讲解__项目数据
  • 微服务实战系列之J2Cache
  • 12.ROS导航模块:gmapping、AMCL、map_server、move_base案例
  • C++中string类的使用
  • LeeCode每日刷题12.8
  • 硕士毕业论文格式修改要点_word
  • 远红外温和护理,一贴缓解痛风不适
  • 优化 SQL 日志记录的方法
  • Java设计模式-工厂模式
  • 每天五分钟计算机视觉:稠密连接网络(DenseNet)
  • mysql支持的整数类型、各类型整数能够表示的数值范围
  • 我不是DBA之慢SQL诊断方式
  • JavaScript基础知识整理(最全知识点, 精简版,0基础版)
  • 人工智能和网络安全:坏与好
  • 基于SSH的java记账管理系统
  • github可访问但无法clone问题
  • WebGL笔记:图形缩放的原理和实现
  • 前端学习--React(5)
  • 【数据结构】平衡树引入
  • 机器视觉相机镜头光源选型