温州网站建设汕头网站建设

河南立信工程管理有限公司 2026/09/09 19:32:22

题目:

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

昆明网站建设长沙市网站建设公司

完成了三子棋游戏的剩余功能开发,主要包括胜负判断和游戏状态判定逻辑。具体实现了:胜负判定系统:玩家执"*",获胜时返回"

2026/06/30 12:35:02

怎样建设网站南通网站建设

文章目录一、核心工具准备二、Word自动化排版完整流程(实战案例)步骤1:加载Word文档并初始化基础设置步骤2:字符样式自动化排版࿰

2026/06/30 11:15:24

律师网站建设网站建设方案书

edge-tts是一个强大的Python库,让你无需Microsoft Edge浏览器、Windows系统或API密钥,就能直接使用微软Edge的在线文本转语音服务。这个开

2026/06/30 13:07:04

潍坊网站建设东阳网站建设

在处理前端表单验证时,经常需要对用户输入的金额、尺寸等数值进行精确控制,要求其必须为一位小数。使用JavaScript正则表达式是实现这一校验最直接有效的方法。它不仅能确保

2026/06/30 10:37:21

莱芜网站建设崇左网站建设

还在为Unity项目中集成计算机视觉功能而烦恼吗?传统方案要么性能低下,要么集成过程复杂到让人望而却步。现在,MediaPipeUnityPlugin为你提供

2026/06/30 11:03:53

上海外贸网站建设廊坊网站建设

第一章:智谱清言Open-AutoGLM概述智谱清言Open-AutoGLM是基于AutoGLM技术构建的开放语言模型平台,旨在为开发者与研究者提供高效、灵活的大模型应用能

2026/06/30 10:39:21

网站建设合同福田网站建设

Dify后端服务高可用部署策略建议在企业级AI应用从原型验证迈向生产落地的今天,一个常见却致命的问题浮出水面:看似运行良好的智能客服或内容生成系统,在促销活动

2026/06/30 11:41:56

物流网站建设合川网站建设

EmotiVoice模型更新日志:v1.0到v2.0的功能演进在语音合成技术正从“能说”迈向“会表达”的今天,一个名字悄然崛起——EmotiVoice。它不是又一款机械朗读

2026/06/30 10:20:49