131. 分割回文串
131. 分割回文串中等给你一个字符串s请你将s分割成一些 子串使每个子串都是回文串。返回s所有可能的分割方案。示例 1输入s aab 输出[[a,a,b],[aa,b]]示例 2输入s a 输出[[a]]提示1 s.length 16s仅由小写英文字母组成 核心笔记分割回文串 (选或不选 / 逗号切割法)1. 核心思想 (一句话总结)“手拿菜刀走到底每个字符后面切一刀还是连着走”我们遍历字符串的每一个字符索引 i对于 i 和 i1 之间的缝隙我们面临两个选择不切 (Join)当前子串还没结束继续往后看下一位。切 (Cut)当前子串[start, i]结束。前提是切下来的这段必须是回文串。图像记忆 (切香肠)你有一根香肠aab。走到第一个a后面不切等着凑个更大的比如aa。切切下来一块a它是回文合法然后处理剩下那截。2. 算法流程 (Input View)这也是典型的选或不选模型Binary TreeBase Casei n说明整个字符串处理完了收集结果。分支一不切 (Skip)条件i n - 1。因为最后一个字符后面必须完结不能悬在半空所以只有不是最后一个字符时才能选择“不切”。动作dfs(i 1, start)。start不变子串变长了。分支二切 (Pick)条件isPalindrome(start, i)。只有当前是回文才能切。动作记录子串dfs(i 1, i 1)。下一个子串从i1开始。回溯removeLast。 代码回忆清单 (带注释版)// 题目LC 131. Palindrome Partitioning class Solution { public ListListString partition(String s) { ListListString ans new ArrayList(); ListString path new ArrayList(); dfs(0, 0, s, path, ans); return ans; } // i: 当前正在考虑第 i 个字符 (作为潜在的结尾) // start: 当前子串的起始位置 private void dfs(int i, int start, String s, ListString path, ListListString ans) { // 1. Base Case: 走到字符串末尾 if (i s.length()) { ans.add(new ArrayList(path)); // 复制结果 return; } // 2. 分支 A: 不切 (Dont Split) // 只有不到最后一位时才能选择不切继续连 // 如果到了最后一位(n-1)必须切否则字符串就没结束 if (i s.length() - 1) { // i 往前移但 start 不动 (子串在变长) dfs(i 1, start, s, path, ans); } // 3. 分支 B: 切 (Split) // 只有 [start, i] 是回文串时才有资格切这一刀 if (isPalindrome(s, start, i)) { path.add(s.substring(start, i 1)); // i 往前移start 也移到 i1 (新子串的起点) dfs(i 1, i 1, s, path, ans); path.removeLast(); // 回溯 } } // 标准双指针判断回文 private boolean isPalindrome(String s, int left, int right) { while (left right) { if (s.charAt(left) ! s.charAt(right--)) { return false; } } return true; } }⚡ 快速复习 CheckList (易错点)[ ]对比标准解法 (For循环枚举)你的解法 (二叉树)每个缝隙选/不选。递归深度 。标准解法 (N叉树)站在start枚举终点j(从start到n)。结论你的解法逻辑严密但在 Java 中因为substring的存在效率相差不大。面试中两种皆可标准解法代码略短一些。[ ]边界条件i n - 1这是此解法的命门。如果i到了最后一个字符你不能选择“不切”因为那样会导致递归结束时最后一段substring没被加入path字符串被“吞”了一截。[ ]回文判断优化目前isPalindrome是 。整个算法接近 。如果字符串很长可以用动态规划 (DP)预处理一个boolean[][] isPal表把判断降为 。️ 数字演练输入s aabDFS(0, 0): 指针在第一个 a。不切:DFS(1, 0)- start0, i1 (当前看着 aa)。切: a 是回文 -path[a]-DFS(1, 1)。分支DFS(1, 0)(刚才选择了不切现在看第二个 a)不切:DFS(2, 0)- start0, i2 (当前看着 aab)。切: aa 是回文 -path[aa]-DFS(2, 2)- 剩下 b - ... -[aa, b]。分支DFS(1, 1)(刚才切了第一个 astart1)不切:DFS(2, 1)- start1, i2 (当前看着 ab)。切: a 是回文 -path[a, a]-DFS(2, 2)- ... -[a, a, b]。(最终结果[aa, b], [a, a, b])

相关新闻

C#中的反射是什么?详细讲解以及在工控上位机中如何应用

C#中的反射是什么?详细讲解以及在工控上位机中如何应用

想深入理解 C# 中的反射机制,并且了解它在工控上位机开发这个特定场景下的具体应用,本会从基础概念到实际应用,由浅入深地为你讲解。一、C# 反射(Reflection)的核心概念1. 反射的定义反射是 C# 提供的一种强大机制&…

2026/7/3 10:41:31 阅读更多 →
C# 的开闭原则(OCP)在工控上位机开发中的具体应用

C# 的开闭原则(OCP)在工控上位机开发中的具体应用

了解 C# 的开闭原则(OCP)在工控上位机开发中的具体应用,这是一个非常贴合实际场景的问题 —— 工控上位机通常需要对接不同品牌 / 型号的 PLC、传感器,还要适配多变的工艺逻辑,OCP 能让这类系统的扩展和维护成本大幅降…

2026/5/17 6:43:48 阅读更多 →
莱博雷生Lemborexant治疗失眠症的标准睡前给药方案与次日嗜睡风险评估

莱博雷生Lemborexant治疗失眠症的标准睡前给药方案与次日嗜睡风险评估

莱博雷生(Lemborexant)作为一种新型双重食欲素受体拮抗剂,自上市以来为失眠症患者提供了新的治疗选择。其独特的机制使其在改善睡眠质量的同时,需重点关注标准睡前给药方案及次日嗜睡风险评估。标准睡前给药方案莱博雷生的推荐起始…

2026/5/17 6:43:48 阅读更多 →

最新新闻

从8万美元跌至千元级,车载激光雷达成本暴跌96%背后:芯片化、规模化与全场景落地实战

从8万美元跌至千元级,车载激光雷达成本暴跌96%背后:芯片化、规模化与全场景落地实战

目录 摘要 一、行业综述:激光雷达从天价科研设备到民用标配的蜕变 1.1 十年价格迭代核心数据 1.2 市场格局与产业现状 二、核心降本逻辑一:芯片化架构重构,从分立器件到单芯片集成 2.1 传统分立架构的致命成本缺陷 2.2 芯片化自研的核心降本原理 2.3 头部厂商差异化…

2026/7/3 17:19:52 阅读更多 →
结构化数据 + GEO:让 AI 真正“读懂”你的网站

结构化数据 + GEO:让 AI 真正“读懂”你的网站

如果你的网站内容连 AI 都“看”不明白,再好的产品和服务也会在生成式搜索时代石沉大海。而让 AI 精准理解你的第一步,就藏在看似不起眼的 Schema 标记里。 一、当搜索引擎变成“答案引擎” 过去十年,SEO 的核心是取悦搜索引擎的爬虫——让它…

2026/7/3 17:17:52 阅读更多 →
如何在Steam Deck上实现多平台游戏启动器的一键整合

如何在Steam Deck上实现多平台游戏启动器的一键整合

如何在Steam Deck上实现多平台游戏启动器的一键整合 【免费下载链接】NonSteamLaunchers-On-Steam-Deck Installs the latest UMU/GE-Proton and Non Steam Launchers under 1 Proton prefix folder and adds them to your steam library. Installs... Battle.net, Epic Games,…

2026/7/3 17:17:52 阅读更多 →
城配内卷时代:谁的“管理颗粒度”更细,谁就能活下来

城配内卷时代:谁的“管理颗粒度”更细,谁就能活下来

城配行业正在经历一场残酷的洗牌。市场规模早已突破万亿,但行业集中度极低——这意味着成千上万家中小车队在同一条赛道里拼价格、拼人效。订单还在涨,单价却在下滑。过去靠“多拉快跑”就能赚钱的日子一去不返,如今拼的是谁的成本更低、谁的…

2026/7/3 17:15:51 阅读更多 →
图像分割完整概念解析

图像分割完整概念解析

图像分割(Image Segmentation)是计算机视觉(Computer Vision)中最重要的任务之一,它可以认为是目标检测(Object Detection)的进一步升级。 如果把整个计算机视觉的发展过程串起来,你…

2026/7/3 17:13:50 阅读更多 →
AI 如何提升工程生产力:高管圆桌会议的关键洞察

AI 如何提升工程生产力:高管圆桌会议的关键洞察

某海外科技公司如何利用 AI 提升研发效能 提升工程效率,是这家海外科技公司工作中的重要组成部分。团队越快向客户交付高质量功能,客户就越能从产品中获得更多价值。随着 AI 编码工具和 AI 工作流逐渐进入 软件开发生命周期,如何利用 AI 提升…

2026/7/3 17:11:50 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻