新闻详情

新闻详情

首页 / 资讯中心 / 详情

元宝 深度思考 LeetCode 131. 分割回文串 JavaScript实现

发布时间:2026/9/30 17:23:06来源:尧图网络
元宝 深度思考    LeetCode 131. 分割回文串 JavaScript实现
LeetCode 131 分割回文串 是一道非常经典的 回溯算法Backtracking 题目。题目描述给定一个字符串“s”将“s” 分割成一些子串使每个子串都是回文串。返回“s” 所有可能的分割方案。示例输入: “aab”输出: [ [“aa”,“b”], [“a”,“a”,“b”] ]解题思路回溯DFS从字符串的起始位置开始依次截取子串。回文判断每截取一个子串判断它是否为回文。如果是回文则将其加入当前方案“path”并递归处理剩余子串。递归结束后进行回溯将该子串从方案中移除尝试其他分割方式。终止条件当起始位置到达字符串末尾时说明找到了一种合法分割将当前方案加入结果集。优化可以用动态规划DP预先计算所有子串是否为回文避免每次递归时重复判断下面提供两个版本。方法一回溯 双指针判断回文简洁直观/**param {string} sreturn {string[][]}*/var partition function(s) {const result [];const path [];// 双指针判断回文function isPalindrome(left, right) {while (left right) {if (s[left] ! s[right]) return false;left;right–;}return true;}// 回溯函数function backtrack(start) {// 递归终止遍历完整个字符串if (start s.length) {result.push([…path]);return;}// 从 start 开始尝试分割 for (let i start; i s.length; i) { if (isPalindrome(start, i)) { // 截取子串 [start, i] path.push(s.substring(start, i 1)); // 递归处理剩余部分 backtrack(i 1); // 回溯 path.pop(); } }}backtrack(0);return result;};方法二回溯 DP 预处理性能更优适合长字符串/**param {string} sreturn {string[][]}*/var partition function(s) {const n s.length;// 1. DP 预处理dp[i][j] 表示 s[i…j] 是否为回文const dp Array.from({ length: n }, () Array(n).fill(false));for (let i 0; i n; i) dp[i][i] true; // 单个字符是回文for (let i n - 1; i 0; i–) {for (let j i 1; j n; j) {if (s[i] s[j]) {dp[i][j] (j - i 1) ? true : dp[i 1][j - 1];}}}// 2. 回溯const result [];const path [];function backtrack(start) {if (start n) {result.push([…path]);return;}for (let i start; i n; i) { if (dp[start][i]) { path.push(s.substring(start, i 1)); backtrack(i 1); path.pop(); } }}backtrack(0);return result;};复杂度分析时间复杂度方法一约 O(n \cdot 2^n) 共有 2^{n-1} 种分割方式每次判断回文 O(n) 。方法二DP 预处理 O(n^2) 回溯过程同样是指数级但回文判断降为 O(1) 。空间复杂度 O(n) 递归调用栈以及存储路径的深度DP 数组额外占用 O(n^2) 。如果你需要我帮你把这段代码改成 TypeScript 版本或者想看 LeetCode 132分割回文串 II求最小分割次数 的动态规划解法随时告诉我
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

注塑MES本地部署与SaaS云部署:数据安全、责任边界与选型对比 2026/9/30 19:01:55

注塑MES本地部署与SaaS云部署:数据安全、责任边界与选型对比

摘要: 本地部署和SaaS云部署没有绝对安全高低。注塑MES数据安全关键看6项能力:权限管理、操作日志、数据备份、基础设施安全、故障恢复与灾备、持续运维。本文从责任边界、技术机制和选型角度展开。一、先厘清:本地与SaaS不是安全高低&#x…

阅读更多 →
ClaudeCode入门08-Git配合:让AI自动写好Commit Message的settings.json配置与分支PR验证 2026/9/30 19:01:55

ClaudeCode入门08-Git配合:让AI自动写好Commit Message的settings.json配置与分支PR验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
零真机数据让RSI转起来!最低5美元完成一个skill,Axis提供的scaling新思路。 2026/9/30 19:01:41

零真机数据让RSI转起来!最低5美元完成一个skill,Axis提供的scaling新思路。

昨天,Axis Robotics 发了一篇新博客,标题叫 Beyond More Tasks: Axis Is Building a Composable Library of Robotic Capabilities。 这家公司很新,今年7月才拿到1200w美元的融资。但做的事情很有意思,押注的是新一代的具身数据生…

阅读更多 →
开题报告怎么写才不被反复打回?Okbiye 开题模块实战拆解 2026/9/30 19:01:41

开题报告怎么写才不被反复打回?Okbiye 开题模块实战拆解

开题报告本质就是一份研究计划书,决定了你整篇毕业论文的走向。很多同学栽在开题环节,不是没有想法,而是不知道怎么把想法转化成规范、完整的书面材料。 研究背景写得空洞,国内外研究现状只会简单罗列文献,技术路线图画…

阅读更多 →
python的先进制造技术工业场景模拟第十三篇:读取机器人轨迹采样数据,计算轨迹各段运动速度,标记速度突变点位。 2026/9/30 19:01:41

python的先进制造技术工业场景模拟第十三篇:读取机器人轨迹采样数据,计算轨迹各段运动速度,标记速度突变点位。

周五下午,机器人弧焊工作站。"这周第三件了,"工艺工程师小李指着报废的焊接件,"焊缝起始段总有顿挫感——机器人不是平滑过渡,而是像卡了一下再继续走。结果起弧点堆焊,背面咬边。三个壳体,…

阅读更多 →
文献综述的检索式怎么定才找得全 2026/9/30 19:01:35

文献综述的检索式怎么定才找得全

写文献综述时,检索式定得对不对,直接决定文献找得全不全。我们把检索式拆成概念组、同义表达、字段限定与跨库适配四层来定,缺掉任何一层都会出现系统性漏检。知学术AIPaperGPT 把大纲、真实文献检索与改稿放在同一条链路里,对接知…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉