商务网站建设广州建设工程交易中心网站

株洲博程电子科技有限公司 2026/09/09 19:02:53

题目:

给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串"ababcc"能够被分为["abab", "cc"],但类似["aba", "bcc"]["ab", "ab", "cc"]的划分是非法的。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s

返回一个表示每个字符串片段的长度的列表。

解答:

1️⃣ 问题本质

题目要求把字符串划分成若干连续区间,使得:

每个字母只出现在其中一个区间内

并返回每个区间的长度。


2️⃣ 关键观察

如果某个字母在字符串中最右一次出现的位置pos
那么只要当前区间里包含了这个字母,这个区间最少要延伸到pos

➡️区间的右边界由区间内所有字符的“最后出现位置”的最大值决定


3️⃣ 预处理(核心准备)

先遍历一次字符串,记录:

  • 每个字母最后一次出现的下标

这样后续在遍历时,可以随时知道:

“当前字符最远会把区间拉到哪里”。


4️⃣ 贪心划分区间(核心思想)

从左到右遍历字符串:

  • 维护一个变量right
    表示当前区间必须到达的最右边界

  • 每遇到一个字符:

    • 更新right为当前right和该字符最后出现位置的最大值

  • 当遍历位置i == right时:

    • 说明当前区间内的所有字符都不会再出现在后面

    • 可以安全地切分一个区间

    • 记录区间长度

    • 从下一个位置开始新一段

这是一个一次扫描 + 局部最优即全局最优的贪心过程。

class Solution { public: vector<int> partitionLabels(string s) { int last[26]; vector<int> length; for (int i = 0; i < s.size(); i++) last[s[i] - 'a'] = i; int right = -1; int start = 0; for (int i = 0; i < s.size(); i++) { right = max(right, last[s[i] - 'a']); if (i == right) { length.push_back(i - start + 1); start = i + 1; } } return length; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

福州网站建设宝安网站建设

LangChain 表达式语言(LCEL)的推出,标志着 AI 应用开发从“脚本时代”进入了“声明式编排时代”。很多人初看 LCEL,以为它只是

2026/06/30 11:28:25

岳阳网站建设青岛 网站建设

深夜的实验室里,咖啡杯沿已经冷透,屏幕上闪烁的光标仿佛在嘲笑我的写作瓶颈——这是每个研究者都熟悉的场景,直到我发现了一种不同的可能性。深夜两点,

2026/06/30 11:15:24

东莞 网站建设网站建设的目的

深入理解 ArduPilot 中的姿态误差补偿:从传感器到控制输出的完整闭环你有没有遇到过这种情况——无人机明明遥控杆回中,却总是轻微倾斜着漂移?或者在一阵侧

2026/06/30 11:55:28

南通网站建设遵义网站建设

Android Root隐藏终极指南:Zygisk Assistant使用详解【免费下载链接】Zygisk-AssistantA Zygisk module to hide root f

2026/06/30 14:14:39

网站建设价格布吉网站建设

Path of Building PoE2珠宝构建:从实战案例到思维升级的完整路径【免费下载链接】PathOfBuilding-PoE2项目地址: https://gitcode.com

2026/06/30 11:34:26

重庆网站建设嘉兴网站建设

????欢迎来到本博客❤️❤️???个人专栏:《ComfyUI 进阶玩家:商用变现 + 脑洞工作流》一起学习交流,解锁 ComfyUI 进阶玩法与变现新路径✨生活不只是眼前的苟且,还有诗和远方Comf

2026/06/30 13:10:04

徐汇网站建设淮南网站建设

10分钟精通JByteMod-Beta:从零开始的Java字节码编辑实战【免费下载链接】JByteMod-BetaJava bytecode editor项目地址: https://gi

2026/06/30 13:28:06

门户网站建设方案湖州网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:创建一个分步指导应用,用图文并茂的方式引导用户:

2026/06/30 13:28:36

广州网站建设工作室网站建设杭州

你是否曾经在多个应用窗口间反复切换时感到效率低下?macOS自带的Cmd+Tab功能只能切换应用而非具体窗口,这让多任务工作变得异常繁琐。本文将通过实测对比

2026/06/30 12:16:30