96SEO 2026-08-07 16:18 3
其实题意特别简单。给你一个字符串,让你把它切成若干段子串,要求每一段都必须是回文串。按理说,最终返回所有合法的切割方案。
比如输入 "aab"既可以切成 也可以切成 这两种都是正确答案。
但凡题目说 “找出所有可能的方案”,第一反应就可以往回溯上靠。本质就是暴力枚举所有情况,不行就回头重来。
但切割问题最绕的地方,就是怎么表示 “当前切到哪了”。我一开始傻乎乎地想,难道要存所有切割点的位置?按理说,后来才突然开窍:这和组合题的 startIndex 根本就是一个道理啊。
我们用一个 start 变量表示当前这段子串的起始位置接下来从 start 开始往后遍历。每走到一个位置 i就相当于在这里切一刀,看看 s 是不是回文。如果是回文,就把这段放进当前方法。接下来递归处理 s. 等递归回来再把这段拿出来继续往后试下一个切割点。
说白了就是每次先确定一段回文前缀,剩下的部分交给递归去解决。等到 end == n 当 start 走到字符串末尾的时候,就说明整条方法完成了一组合法解。
var partition = function {
const res =;const path =;const n = s.length;// 判断 s 是否是回文串
const isPalindrome = => {
while {
if return false;left++,right--;}
return true;},按理说,const backtrack = => {
// 切到末尾了 → 找到一组合法解
if {
res.push;return,}
for {
if ) continue;
// 不是回文 → 跳过
path.push);// 加入当前片段
backtrack;// 递归处理剩余部分
path.pop;// 回溯撤销
}
},backtrack;return res,};
时间复杂度大概是 O。最坏情况每个位置都能产生一次分割。一共 ⁿ−1 种分割方式,每次判断回文要 O。空间是 O,主要是递归栈和方法数组开销。
这道题我前前后后刷了三遍才彻底吃透。说穿了就是回溯模板的字符串切割版,主要就是用 startIndex 控制起点。
掌握了这道题,你基本上能快速找到思路面对所有字符串切割类的回溯挑战。如果你刚学完回溯,还在类似问题卡壳或者有更巧妙实现。请在评论区分享经验~ 我会逐条回复。如果觉得有帮助,也请点赞,让更多小伙伴看到!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback