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

力扣算法ing(59 / 100)

4.17 回溯合集—131.分割回文数

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

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

我的思路:

分割为子串,每个子串都是回文串

aab

a a b

aa b

a ab

每个都是回文串->单个值肯定是回文串

如果进行回溯的话:

a      aa       aab
a ab(×)b
b
a,a,b  aa,b     

回溯:

for循环遍历字符串

回溯遍历剩下的字符串,判断是否为回文,不能重复切割

遍历终止条件startIndex === s,length;

判断是否为回文:双指针判断是否相同

function isHuiwen(s:string , startIndex:number , i : number){while(startIndex < i){if(s[startIndex] !== s[i]){return false;}startIndex++;i--;}return true;}

答案错误:在 backtracking 函数中,将字符逐个添加到路径中,这是错误的,我们应该添加的是子串

path.push(s.substring(startIndex , i+1));

正确代码:

function partition(s: string): string[][] {const path = [];const res = [];function backtracking(startIndex : number){if(startIndex === s.length){res.push([...path]);return;}for(let i = startIndex ; i< s.length ;i++){// 判断是否为回文// 是回文if(isHuiwen(s , startIndex , i)){path.push(s.substring(startIndex , i+1));}else {continue;}backtracking(i+1);path.pop();}}function isHuiwen(s:string , startIndex:number , i : number){while(startIndex < i){if(s[startIndex] !== s[i]){return false;}startIndex++;i--;}return true;}backtracking(0);return res;
};

总结:最开始的时候我确实有点不知所措,但是其实这里面就是两个算法:回溯+判断回文

回溯的思路和组合数大差不差,但是在进入path之前要判断是否为回文字符,放入应该是子串而不是字符

http://www.dtcms.com/a/138003.html

相关文章:

  • B端网站建设,怎样平衡功能与美观,满足企业多元需求?
  • 【测试工具】JMeter使用小记
  • Dell戴尔服务器 PowerEdge R750xs + window server2012r2 || 2016
  • kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
  • 数据结构|排序算法(三)选择排序 堆排序 归并排序
  • 【AI】React Native中使用Zustand框架及自动生成选择器
  • Uniapp微信小程序:轻松获取用户头像和昵称
  • 【长按图片识别】uniapp vue开发时,点击图片识别—实现转发、收藏、识别图片二维码
  • git tag 标签
  • 基于pycatia的CATIA自动化干涉检测系统开发全解析
  • day30图像处理OpenCV
  • 如何通过数据分析提升软件开发项目的成功率?
  • 电控---printf重定向输出
  • 分布式笔记(一)
  • Python中列表与元组的遍历与排序
  • DeepSeek智能时空数据分析(一):筛选特定空间范围内的POI数据
  • python: range()函数用法总结
  • 高级java每日一道面试题-2025年4月11日-微服务篇[Nacos篇]-Nacos使用的数据库及其数据同步机制是什么?
  • Linux——信号(1)信号的产生
  • 【uniapp】vue2 使用 Vuex 状态管理
  • Linux:进程:进程调度
  • 电控---CMSIS概览
  • 关于 AI智能穿戴设备 的详细解析,涵盖其定义、核心技术、功能特性、应用场景、市场现状、挑战与未来趋势,结合典型案例帮助理解其核心价值
  • HTML:表格数据展示区
  • Android studio前沿开发--利用socket服务器连接AI实现前后端交互(全站首发思路)
  • Springboot 自动装配原理是什么?SPI 原理又是什么?
  • 【PGCCC】Postgres MVCC 内部:更新与插入的隐性成本
  • Selenium 获取 Web 页面信息的全指南
  • 【补充篇】Davinci工具要求的dbc格式
  • FortiAI 重塑Fortinet Security Fabric全面智能化进阶