news 2026/8/24 7:28:16

LeetCode热题100--763. 划分字母区间--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--763. 划分字母区间--中等

题目

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

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

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

示例 1:
输入:s = “ababcbacadefegdehijhklij”
输出:[9,7,8]
解释:
划分结果为 “ababcbaca”、“defegde”、“hijhklij” 。
每个字母最多出现在一个片段中。
像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。

示例 2:
输入:s = “eccbbbbdec”
输出:[10]

题解

classSolution{publicList<Integer>partitionLabels(StringS){char[]s=S.toCharArray();intn=s.length;int[]last=newint[26];for(inti=0;i<n;i++){last[s[i]-'a']=i;// 每个字母最后出现的下标}List<Integer>ans=newArrayList<>();intstart=0,end=0;for(inti=0;i<n;i++){end=Math.max(end,last[s[i]-'a']);// 更新当前区间右端点的最大值if(end==i){// 当前区间合并完毕ans.add(end-start+1);// 区间长度加入答案start=i+1;// 下一个区间的左端点}}returnans;}}

解析

出自:本质是合并区间,简洁写法(Python/Java/C++/C/Go/JS/Rust)

classSolution{//定义一个新的解决方案类publicList<Integer>partitionLabels(StringS){//partitionLabels是接收字符串S的方法char[]s=S.toCharArray();//将输入的字符串转换为字符数组's'intn=s.length;//获取字符串的长度'n'并保存到变量中int[]last=newint[26];//初始化一个大小为26的整型数组,表示英文字母表中的每个字母的索引。这个将用于获取最后出现的下标值for(inti=0;i<n;i++){//循环遍历整个s数组last[s[i]-'a']=i;//每次迭代时,更新字符在输入字符串中的索引位置。这里通过计算字母在英文字母表中的索引值来实现。比如在最后出现了'd'字符,就找到了它的最远索引}List<Integer>ans=newArrayList<>();//初始化一个空的数组列表以存储最终答案intstart=0,end=0;//定义变量start和end为区间的起点和终点。这两个点表示可能包含最多不重复字母的子串/区间,即我们要找的划分/区间for(inti=0;i<n;i++){//再次从头开始循环遍历整个s数组。这个循环用于确定每个可能区间的结束点end=Math.max(end,last[s[i]-'a']);//当前字母/字符的最后出现的位置和已经迄今为止找到的最远位置(比如'd'在这里表示一个子串中的最大索引,它将一直增加直到达到所有部分或数组末尾)if(end==i){//如果当前确定的区间(从start到end之间包括这两个点)结束的位置等于当前迭代器'i'表示的字符,意味着没有重复/公共字母存在。因为在给定子串中只有这个部分包含所有唯一字母ans.add(end-start+1);//将长度加入答案列表(end-start+1,因为在Java中数组索引从0开始)start=i+1;//移动到下一个区间的起点。'i +1'确保我们向前移动一步到达下一个字母/字符的位置,并成为新的区间或子串的起始点}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 16:25:52

REAL-Video-Enhancer终极教程:5分钟掌握免费视频增强神器

REAL-Video-Enhancer是一款功能强大的开源视频增强工具&#xff0c;专为Linux、macOS和Windows用户设计&#xff0c;提供高质量的帧插值和超分辨率处理能力。这个免费的视频增强工具能够显著提升视频流畅度和清晰度&#xff0c;让老旧视频焕发新生。无论您是视频创作者、动漫爱…

作者头像 李华
网站建设 2026/8/21 19:09:26

Win11 VMware蓝屏修复终极方案:告别虚拟机崩溃困扰

Win11 VMware蓝屏修复终极方案&#xff1a;告别虚拟机崩溃困扰 【免费下载链接】Win11环境下VMwareWorkstationPro运行虚拟机蓝屏修复指南 本资源文件旨在帮助用户在Windows 11环境下解决VMware Workstation Pro运行虚拟机时出现的蓝屏问题。通过安装Hyper-V服务&#xff0c;可…

作者头像 李华
网站建设 2026/8/21 4:39:21

Langchain-Chatchat社区生态现状与发展前景展望

Langchain-Chatchat社区生态现状与发展前景展望 在企业智能化转型的浪潮中&#xff0c;一个看似简单却长期困扰组织的问题正被重新审视&#xff1a;那些散落在各个部门、存储于不同格式文档中的内部知识——从员工手册到技术规范&#xff0c;从合同模板到操作流程——如何才能真…

作者头像 李华
网站建设 2026/8/22 23:48:54

LlamaIndex架构解密:7步构建高性能LLM数据管理系统 [特殊字符]

LlamaIndex架构解密&#xff1a;7步构建高性能LLM数据管理系统 &#x1f680; 【免费下载链接】llama_index LlamaIndex&#xff08;前身为GPT Index&#xff09;是一个用于LLM应用程序的数据框架 项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index 你是否…

作者头像 李华
网站建设 2026/8/21 13:58:37

Langchain-Chatchat本地知识库问答系统实战:如何用GPU加速大模型推理

Langchain-Chatchat本地知识库问答系统实战&#xff1a;如何用GPU加速大模型推理 在企业越来越依赖智能问答系统的今天&#xff0c;一个现实问题摆在面前&#xff1a;我们是否必须把敏感文档上传到云端才能获得强大的语言理解能力&#xff1f;答案显然是否定的。随着开源生态和…

作者头像 李华
网站建设 2026/8/24 7:39:14

深度剖析:群晖DS920+定制化引导镜像的构建奥秘

深度剖析&#xff1a;群晖DS920定制化引导镜像的构建奥秘 【免费下载链接】rr Redpill Recovery (arpl-i18n) 项目地址: https://gitcode.com/gh_mirrors/rr2/rr 在开源社区中&#xff0c;RR项目为群晖DS920型号成功构建了定制化引导镜像&#xff0c;这一技术实践不仅展…

作者头像 李华