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

铜鼓县赣丰汽运有限公司 2026/09/09 17:38:49

题目:

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

集团网站建设做网站建设的

博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业,有18年开发经验,长年从事毕业指导,项

2026/06/30 12:42:03

九江网站建设专业网站建设公司

摘要随着互联网技术的快速发展和社区团购模式的兴起,传统线下团购方式已无法满足现代消费者的高效便捷需求。社区团购系统通过整合线上线下资源,优化供应链管理,降低商

2026/06/30 11:19:25

黄石网站建设网站建设免费

亲测好用8个AI论文网站,本科生搞定毕业论文不求人!AI 工具让论文写作不再难在当今这个信息爆炸的时代,越来越多的本科生开始借助 AI 工具来辅助完成毕业论文

2026/06/30 11:13:24

东营网站建设巴中网站建设

见字如面,我是军哥!最近一位读者找我聊,语气挺郁闷:“军哥,我技术自认不差,在京东干过核心系统,代码又

2026/06/30 12:57:34

网站建设心得宝山网站建设

成本对比:长期运行MGeo模型的云端GPU选型指南作为一位创业公司的CTO,我最近在评估不同云服务商运行MGeo模型的成本效益时遇到了难题。MGeo是一种多模态地理语言模型

2026/06/30 13:51:07

寿光网站建设建设个人网站

在 Python 中获取列表嵌套字典(多层嵌套)的键值对,需要根据数据的嵌套层级、结构是否固定,选择直接访问、循环遍历、递归解析或专用库查询等方

2026/06/30 11:13:24

长春网站建设网站建设的公司

PyTorch分布式训练在Miniconda环境中的配置要点在现代深度学习项目中,动辄数十亿参数的模型让单卡训练变得遥不可及。一个典型的ResNet-50训练任务,在单张A

2026/06/30 12:11:30