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

合肥欧派水泥预制品厂 2026/09/09 18:31:33

题目:

给你一个字符串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; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

上海网站建设公司网站建设套餐

Mos深度解析:5分钟让macOS外接鼠标滚动如丝般顺滑【免费下载链接】Mos一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A l

2026/06/30 13:37:36

免费建设网站嘉兴网站建设

3dsconv终极指南:轻松转换3DS游戏格式的完整教程【免费下载链接】3dsconvPython script to convert Nintendo 3DS CCI (".c

2026/06/30 10:26:50

网站建设方案网站建设解决方案

直接内存的分配与回收核心是 “Native 层分配内存 + Java 层持有引用 + Cleaner 机制回收”,全程需 JVM 与操作系统协同,具体原理如

2026/06/30 13:02:34

潍坊网站建设宁波网站建设

还在为网盘下载速度慢而烦恼吗?今天要介绍的这款网盘直链解析工具,正是解决这一痛点的完美方案。基于JavaScript开发的这款工具,能够智能解析各大网盘文件的

2026/06/30 13:17:05

英文网站建设寿光网站建设

抖音播放量低怎么提升?合肥微之云信息科技为您提供专业解决方案在抖音平台,视频播放量是衡量内容传播效果和账号健康度的关键指标。许多商家和个人创作者都曾面临视频发布后播放量持续

2026/06/30 10:57:52

广州网站建设公司凯里网站建设

芝麻粒-TK完整使用教程:蚂蚁森林能量自动收取的终极解决方案【免费下载链接】Sesame-TK芝麻粒-TK项目地址: https://gitcode.com/gh_mirrors/ses

2026/06/30 11:04:53

网站正在建设中上海门户网站建设

想要在金融市场中建立自己的量化交易系统?Python量化交易框架vnpy为你提供了完整的解决方案。这个基于Python的开源平台让个人投资者也能轻松搭建专业的自动交易系统,

2026/06/30 10:24:50

大连网站建设太原网站建设

这是一个 Rust 时间库中的Duration结构体实现,提供高精度的时间跨度表示。1. 主要特性纳秒级精度:由整秒和纳秒部分组成支持负值:与标准库的std:

2026/06/30 13:07:04