news 2025/12/14 14:43:54

力扣 划分字母区间

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 划分字母区间

题目:

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

Springboot美食分享网站a73c9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;用户,美食分类,菜谱分类,美食菜谱,饮食计划,热门美食开题报告内容一、选题背景与意义&#xff08;一&#xff09;选题背景随着互联网技术的飞速发展和人们生活水平的提高&#xff0c;美食已成为人们日常生活中不可或缺的一部分。越来越多的…

作者头像 李华
网站建设 2025/12/14 14:41:57

Springboot门店运营管理系统hd158(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;店员,商品,部门信息,供应商,仓库,采购,快递,收银开题报告内容一、研究背景与意义研究背景随着社会经济的快速发展和消费者需求的日益多样化&#xff0c;传统的手工门店运营管理模式已难以满足现代商业的需求。在传统模式下&#xff0c;门店…

作者头像 李华
网站建设 2025/12/14 14:41:25

Stellarium望远镜控制实战指南:从硬件连接到精准观测

Stellarium望远镜控制实战指南&#xff1a;从硬件连接到精准观测 【免费下载链接】stellarium Stellarium is a free GPL software which renders realistic skies in real time with OpenGL. It is available for Linux/Unix, Windows and macOS. With Stellarium, you really…

作者头像 李华
网站建设 2025/12/14 14:34:11

快速验证:基于CentOS 7.6的测试环境搭建

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速搭建CentOS 7.6测试环境的工具。功能包括&#xff1a;一键下载最小化镜像&#xff0c;自动创建虚拟机(支持VirtualBox和VMware)&#xff0c;预装常用开发工具。提供环境…

作者头像 李华
网站建设 2025/12/14 14:33:20

AI定价实战指南:快速构建电商智能定价系统

在当今竞争激烈的电商环境中&#xff0c;传统的统一价格策略已经无法满足多样化的市场需求。AI定价和个性化策略正成为电商企业提升竞争力的核心武器。面对海量用户数据、实时市场变化和复杂的定价因素&#xff0c;如何快速构建一个智能、灵活且高效的定价系统&#xff1f; 【免…

作者头像 李华