【Hot 100】763. 划分字母区间

article/2025/7/28 6:07:20

目录

  • 引言
  • 划分字母区间
    • 我的解题
      • 一、记录每个字母的最远出现位置
      • 二、扫描字符串并进行贪心划分

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot 100】763. 划分字母区间
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

划分字母区间

  • 🎈 题目链接:
  • 🎈 做题状态:

我的解题

为了解决“每个字母最多只出现在一个区间中”的问题,采用的是贪心策略,目标是在遍历过程中尽早确定每一个可以独立划分的区间。整个解题思路可以分为两个主要阶段:


一、记录每个字母的最远出现位置

我们首先需要知道每个字符的最右侧位置(即最后一次出现的位置),这样在遍历时就能判断一个区间内的所有字符是否都已经包含完整。由于题目中限定字符串由小写字母组成,因此可以直接使用一个大小为 26 的整型数组 last[26],通过 s[i] - 'a' 将字符映射到对应数组下标。在一次遍历中,我们将每个字符的最新索引位置记录下来。


二、扫描字符串并进行贪心划分

在第二轮遍历中,我们从左到右扫描字符串。使用两个变量:

  • start 表示当前区间的起点;
  • end 表示当前区间中所有字符的最远右边界(可能会动态扩大)。

每访问一个字符 s[i],就将 end 更新为 max(end, last[s[i]]),也就是说当前区间至少要覆盖这个字符的最远位置。如果我们发现当前位置 i 正好等于 end,说明当前区间中的所有字符都不会再在后续出现了,此时可以安全地进行一次划分,并将该区间长度 end - start + 1 添加到结果数组中。随后更新 start = end + 1,开启下一段区间的判断。


class Solution {
public:vector<int> partitionLabels(string s) {int last[26];  // 记录每个字母的最后一次出现位置int length = s.size();// 第一步:记录每个字符的最右侧位置for (int i = 0; i < length; ++i) {last[s[i] - 'a'] = i;}vector<int> partition;int start = 0, end = 0;// 第二步:遍历并划分区间for (int i = 0; i < length; ++i) {end = max(end, last[s[i] - 'a']);  // 扩大当前分段右边界// 到达当前分段的终点,开始划分if (i == end) {partition.push_back(end - start + 1);  // 记录长度start = end + 1;  // 开启新分段}}return partition;}
};

http://www.hkcw.cn/article/lcWFmFhyED.shtml

相关文章

【Unity博客节选】Playable Graph Monitor 安装使用

注&#xff1a;软件版本Unity 6.0 Timeline 1.8.7 作者&#xff1a;CSDN RingleaderWang 原文&#xff1a;《Unity第25期——Timeline结构及其源码浅析》 文章首发Github&#x1f44d;&#xff1a;《Timeline结构及其源码浅析》 Bilibili 视频版&#x1f44d;&#x1f44d;&a…

<5>, Qt系统相关

目录 一、Qt 事件 1&#xff0c;事件的定义 2&#xff0c;事件的处理 3&#xff0c;鼠标事件 4&#xff0c;按键事件 5&#xff0c;定时器 6&#xff0c;事件分发器 7&#xff0c;事件过滤器 二、Qt 文件 1&#xff0c;输入输出类 2&#xff0c;文件读写类 3&#x…

PCB设计教程【强化篇】——USB拓展坞DRC导出生产文件

前言 本教程基于B站Expert电子实验室的PCB设计教学的整理&#xff0c;为个人学习记录&#xff0c;旨在帮助PCB设计新手入门。所有内容仅作学习交流使用&#xff0c;无任何商业目的。若涉及侵权&#xff0c;请随时联系&#xff0c;将会立即处理 目录 前言 丝印调整 DRC 检查…

第十一讲 | 多态

多态 一、多态的概念二、多态的定义及实现1、动态多态的构成条件&#xff08;1&#xff09;、实现多态还有两个必须重要条件&#xff08;2&#xff09;、虚函数&#xff08;3&#xff09;、虚函数的重写/覆盖&#xff08;4&#xff09;、多态场景的一个选择题&#xff08;5&…

火语言UI组件--文件对话框

【组件功能】&#xff1a;选择单个或多个文件的对话框。 样式预览 设置 基础设置 属性名称属性释义输入值类型标题(title)对话框的标题字符串类型默认路径(defaultPath)对话框的默认展示路径字符串类型多选(multiSelections)是否允许多选布尔型(true / false)显示隐藏文件(s…

rl_sar功能包详解

文章目录 1. 功能包概述2. 目录结构详解2.1 核心目录结构2.2 各目录功能src/ 目录 - C源代码实现scripts/ 目录 - Python脚本实现include/ 目录 - C头文件library/ 目录 - 核心库和第三方依赖models/ 目录 - 预训练模型库launch/ 目录 - ROS启动文件worlds/ 目录 - Gazebo仿真世…

InternVL2.5-多模态大模型评估专业图片

具备图像理解功能的大模型InternVL2.5&#xff0c;能有效解析大部分图片。 对于专业图片如医学细胞切片&#xff0c;从专业角度解析&#xff0c;能推动模型应用到更广泛的领域。 InternVL2.5解析示例 prompt(胸部癌变细胞图片,来自PanNuke) 请评估这个组织的风险 InternVL2.…

解决 IDEA 在运行时中文乱码问题

直接说解决办法 编译 IDEA 所在目录的启动的 .vmoptions 文件&#xff0c;添加以下JVM 参数即可 -Dfile.encodingUTF-8如下图所示&#xff0c;Help > Edit Custom VM Options&#xff0c;随后在编辑框中添加-Dfile.encodingUTF-8 的 JVM 参数

【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出&#xff0c;万山无阻 目录 &#x1f4d6;一、进程创建 1.fork函数 &#x1f4da;高层封装特性 &#x1f4da;fork返回值 2.写时拷…

《Linux权威指南:从小白到系统管理员(上册)》深度解析与实践指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】摸鱼、技术交流群&#x1f449; 点此查看详情 引言 Linux 作为现代计算的核心操作系统之一&#xff0c;广泛应用于服务器、云计算、嵌入式开发等领域。《Linux权威指南&#xff1a;从小白到系统管理…

【Linux】信号

目录 一、信号的概念二、信号的产生2.1 通过键盘进行信号的产生2.2 通过系统调用进行信号的产生2.2.1 kill函数2.2.2 raise函数2.2.3 abort函数 2.3 通过异常的方式进行信号的产生2.4 通过软件条件的方式进行信号的产生2.4.1 关闭管道读端2.4.2 alarm函数 2.5 Core Dump&#x…

「模型部署系列」ubuntu 使用vllm部署Qwen3-8B模型

1、下载vllm v0.8.5&#xff08;此处已经下好了&#xff0c;去仓库拉资源&#xff09; 2、 下载Qwen3-8B 方式1: 在下载前&#xff0c;请先通过如下命令安装ModelScope pip install modelscope 命令行下载 下载完整模型库 modelscope download --model Qwen/Qwen3-8B 下…

亮数据与 AI 深度集成:构建电商策略自动化系统新范式

目录 1.引言&#xff1a;电商增长遇瓶颈&#xff0c;AI 能否破局&#xff1f;2.挖掘痛点&#xff1a;精准营销为何难以落地&#xff1f;3.解决之道&#xff1a;为什么选择亮数据而不是传统爬虫&#xff1f;3.1轻松绕过反爬机制&#xff0c;保障数据采集稳定性3.2 零代码门槛&am…

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

文章目录 前言一、YOLOv12代码下载地址1.YOLOv12模型结构图 二、YOLO环境配置教程1.创建虚拟环境2.激活虚拟环境3.查询自己电脑可支持最高cuda版本是多少&#xff08;无显卡的同学可以跳过这个步骤&#xff09;4.pytorch安装5.验证 PyTorch GPU 是否可用&#xff08;没有显卡的…

Nginx下载与安装(Liunx环境)

1、Nginx下载 官网地址&#xff1a;https://nginx.org/en/download.html 2、安装依赖包 //安装gcc yum install gcc-c //安装PCRE pcre-devel yum install -y pcre pcre-devel //安装zlib yum install -y zlib zlib-devel //安装Open SSL yum install -y openssl openssl-deve…

雷达中实信号与复信号

一、什么是实信号和复信号 实信号是指信号的时域取值在数学表示和物理实现中始终为实数的信号&#xff0c;其基本的表达式为&#xff1a;&#xff1b;复信号是指时域取值在数学表示中始终为复数的信号&#xff0c;其基本的表达式为&#xff1a;。从实信号与复信号的定义可知&am…

【存储基础】NUMA架构

文章目录 1. 前置知识:物理CPU和CPU核心物理CPUCPU核心关系 2. NUMA架构2.1 NUMA架构是什么&#xff1f;2.2 NUMA架构详解2.3 查看NUMA信息2.4 NUMA架构在分布式存储中的应用数据本地化 Data Locality计算与存储协同调度NUMA感知的网络通信内存池优化与跨节点均衡 3 补充&#…

HTTP协议解析

HTTP&#xff08;超文本传输协议&#xff09;是万维网的基础协议&#xff0c;自1991年诞生以来&#xff0c;已成为最广泛使用的应用层协议。本文将深入解析HTTP协议的核心概念、工作原理及实际应用。 HTTP协议基础 什么是HTTP&#xff1f; HTTP (全称为 "超文本传输协…

小麦“颗粒归仓”有了“最强大脑”

全国小麦主产区自南向北陆续进入紧张抢收阶段,夏种也全面展开。河南夏种已完成四成,以玉米、花生为主。安徽夏种已完成近三成,以水稻和玉米为主。各地如何针对天气情况抢抓收获“窗口期”,确保粮食“颗粒归仓”?目前,安徽4300多万亩的小麦收获已接近尾声。当记者来到安徽…

数据结构:递归(Recursion)

目录 示例1&#xff1a;先打印&#xff0c;再递归 示例2&#xff1a;先递归&#xff0c;再打印 递归的两个阶段 递归是如何使用栈内存 复杂度分析 递归中的静态变量 内存结构图解 递归&#xff1a;函数调用自己 必须有判断条件来使递归继续或停止 我们现在通过这两个示…