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

leetcode 分割回文串 java

我对回溯题还是不清楚,尤其是还原现场这部分。
这道题是从答案角度出发,考虑如何分割。参考Leetcode的解题。

在这个回溯过程中:

  1. 每走一步,对于每个逗号,有两个选项:要么不选它,要么选它。每个选项就像是在树上走一个分支。
  2. 但是我们一次只能处理一个分支,计算完了【不选】的分支,就要倒回去,回到前面去处理另外一个【选】的分支。倒回去之前加到 path 中的数据是垃圾数据,要及时清除掉。
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);return ans;}private void dfs(int i){if(i==s.length()){ans.add(new ArrayList<>(path));return;}//i为子串开始的位置,j为子串结束的位置for(int j=i; j<s.length();j++){if(isPalindrome(i,j)){path.add(s.substring(i,j+1));//对s的剩余部分进行分割dfs(j+1);//回溯path.remove(path.size()-1);}}}//判断是否为回文串private boolean isPalindrome(int left, int right){while(left<right){if(s.charAt(left++)!=s.charAt(right--)){return false;}}return true;}
}
http://www.dtcms.com/a/251149.html

相关文章:

  • 深度对话:TensorFlow与PyTorch的API哲学——如何影响你的模型调试与生产部署?
  • Node.js 中两种模块导出方式区别
  • 数据质量-如何构建高质量的大模型数据集
  • .net6接口多个实现类使用特性标记并解析
  • JavaScript 与 Vue 键盘事件全面指南(Composition API + <script setup>)
  • [AAAI Oral] 简单通用的公平分类方法
  • WebRTC(四):STUN协议
  • Redis全面深入学习目录
  • 02-D3.js 控制横向柱图切换数据带动画效果
  • 微信小程序使用computed
  • Python文件与目录操作管理详解
  • 【系统分析师】2011年真题:综合知识-答案及详解
  • 条件收敛的级数中项必须趋于 0,正负项抵消,但趋于 0 的速度不需要“足够快”
  • 《仿盒马》app开发技术分享-- 回收金提现安全锁校验(端云一体)
  • Java基础复习之继承
  • 【鸿蒙初级】
  • EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库
  • Flutter包管理与插件开发完全指南
  • flutter 项目配置Gradle下载代理
  • 算法题(力扣每日一题)—改变一个整数能得到的最大差值
  • 性能优化 - 高级进阶: Spring Boot服务性能优化
  • 强化学习-UCB示例
  • leetcode0187. 重复的DNA序列-medium
  • 【Linux】基于策略模式的简单日志设计
  • Rokid AR交互开发工具对比
  • 怎么优化MySQL中的索引
  • MIT线性代数第三讲笔记
  • [笔记] 基于esp32s3用GUI-Guider-1.9.1-GA开发LVGL界面
  • UI学习汇总
  • LiteRT-LM边缘平台上高效运行语言模型