763. 划分字母区间 - 力扣(LeetCode)

题目描述

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

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

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

题目示例

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

解题思路

我们使用一个数组来记录每个字母出现的最远位置,然后使用 跳跃游戏II 的策略,滑动窗口的思想。我们不断遍历目标字符串每个字符出现的最远位置,不断更新右边界(右边界就是最远位置),如果到了右边界就将区间长度加入结果集(代表到了分割点),然后使得左边界加1,继续使用滑动窗口更新右边界。
在这里插入图片描述

参考代码

class Solution {public List<Integer> partitionLabels(String s) {// 统计每个字母的最远位置int[] hash = new int[26];char[] chars = s.toCharArray();for(int i = 0; i < chars.length; i++) {hash[chars[i] - 'a'] = i;}// 遍历根据覆盖距离List<Integer> ans = new ArrayList<>();int left = 0;int right = 0;// 遍历整个字符串for(int i = 0; i < chars.length; i++) {// 不断更新右边界right = Math.max(right, hash[chars[i] - 'a']);// 如果到了右边界,代表我们找到了这个分割线if(i == right) {ans.add(right - left + 1);left = i + 1;}}return ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

股票交易维度和概念

股票&#xff1a;股份公司为筹集资金而发行给各个股东作为持股凭证并借以取得股息和红利的一种有价证券 好处&#xff1a;分红、送股配股、交易收益、本金少、易变现、避免货币贬值 金融标的投资风险与收益 股票分类 蓝筹股 经营业绩长期稳定增长的大公司&#xff0c;一般是…

IaC基础设施即代码:Terraform 连接 azure Blob 实现多资源管理

目录 一、实验 1.环境 2.Terraform 连接 azure Blob 3.申请虚拟网络资源 4.申请子网资源 5.申请安全组资源 6.申请公网IP与网络接口资源 7.申请虚拟机资源 8.申请负载均衡器 9.销毁资源 二、问题 1.存储无法删除 一、实验 1.环境 &#xff08;1&#xff09;主机 表…

【mongoDB】文档 CRUD

目录 1.插入文档 批量插入&#xff1a; 2.查询文档 3.更新文档 4.删除文档 deleteOne() deleteMany() findOneAndDelete() 1.插入文档 可以使用 insert () 方法或者 save() 方法向集合中插入文档 语法如下&#xff1a; db.collection_name.insert(document) collectio…

6.2第三次作业

综合练习&#xff1a;请给openlab搭建web网站 网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料 和缴费网站&#xff0c;基于&#xff0c;www.openlab.com/data网站…

css垂直水平居中(父元素宽高有无情况)+ flex用法

垂直水平居中----6种方法 知道父元素具体宽高时&#xff1a; 父元素设置display:flex, 子元素设置 margin:auto.父元素相对定位&#xff0c;子元素绝对定位 4个属性都设置0&#xff0c;再设置margin:auto.父元素相对定位&#xff0c;子元素绝对定位&#xff0c;left:50%,top:…

sql管理工具archery简介

在平时的工作过程中&#xff0c;我们肯定会遇到使用sql平台的场景&#xff0c;业内也有很多工具&#xff0c;类似阿里云的dms&#xff0c;但是这个是和云厂商绑定的&#xff0c;我们可能一般没有用到阿里云组件就比较困难了&#xff0c;那还有什么选项了&#xff0c;经过调研&a…

leetcode常见错误

2024年1月26日 Line 1037: Char 34: runtime error: addition of unsigned offset to 0x503000000070 overflowed to 0x50300000006c (stl_vector.h) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c…

redis主从复制薪火相传

一.主从复制 1、是什么 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 2、能干嘛 读写分离&#xff0c;性能扩展&#xff08;主 写 从 读&#xff09; 容…

yolov5转onnx到ncnn

测试代码6.2 检测这一套都没啥说的主要在onnx转ncnn这步 python export.py --data data/xuehua.yaml --weights runs/train/exp4/weights/best.pt --trainpython -m onnxsim runs/train/exp4/weights/best.onnx runs\train\exp4\weights\best-sim.onnx(这步重要)&#xff0c;如…

字符串学习笔记

一、字符串的概念 字符串是一种在编程中常用的数据类型&#xff0c;用于表示文本数据。在 Python 中&#xff0c;字符串是不可变的序列&#xff0c;可以包含字母、数字、符号等字符。Python 允许使用单引号 () 或双引号 (") 来创建字符串。 strOne string strTwo &quo…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求&#xff1a;不使用内置函数len&#xff08;&#xff09;&#xff0c;完成字符串长度的计算 #统计字…

实习记录——第四天

今天还是学了一天&#xff1a; 我的日报&#xff1a; 1.25日总结&#xff1a; 一、完成三道CTF题目&#xff1a; 信息收集题目&#xff0c;目录扫描&#xff0c;但是我的工具没扫出来&#xff0c;往工具字典里加入了字段&#xff1b;sql注入题目&#xff0c;考察布尔盲注&…

网站无法通过域名访问有哪些原因?

如果网站无法通过域名访问&#xff0c;可能涉及多个方面的问题。以下是一些可能导致这种情况的原因和解决方法&#xff1a; 域名解析问题&#xff1a; DNS配置错误&#xff1a; 检查域名的DNS配置是否正确&#xff0c;确保域名解析到正确的IP地址。 DNS缓存问题&#xff1a; 如…

[go] 中介者模式

设计模式 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 模型说明 组件&#xff08;Component&#xff09;是各种包含业务逻辑的类。每个组件都有一个…

伊恩·斯图尔特《改变世界的17个方程》薛定谔方程笔记

想法是等这学期学到薛定谔方程后再把整份完善下。 它告诉我们什么&#xff1f; 这个方程不是把物质作为粒子&#xff0c;而是作为波&#xff0c;并描述这样的波如何传播。 为什么重要&#xff1f; 薛定谔方程是量子力学的基础&#xff0c;它与广义相对论一起构成了当今最有效的…

NGINX如何实现rtmp推流服务

最近直播大火&#xff0c;直播推流软件遍地开花&#xff0c;那么用NGINX如何进行推流呢&#xff1f;下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流&#xff0c;我们主要从一下几点介绍&#xff1a; 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术&#xff0c;专业术语叫 Dead code elimination 简单来讲&#xff0c;就是在保持代码运行结果不变的前提下&#xff0c;去除…

ctfshow-命令执行

大佬文章 L i n u x \rm Linux Linux 下空格绕过 无参数 r c e \rm rce rce 无字符 r c e \rm rce rce web29 通配符&#xff1a; *&#xff1a;匹配任意多个字符 ?&#xff1a;匹配任意一个字符 []&#xff1a;匹配某个范围的字符&#xff08; [ a d ] [ad] [ad] 表示 …

day05-盒子模型

01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 li:first-child {background-color: green; } :nth-child(公式) 提示&#xff1a;公式中的n取值从 0 开始。 伪元素选择器 作用&#xff1a;创建虚拟元素&#xff08;伪元素&#xff09;…

基于单片机的感应自动门控制器的设计

摘要 现如今自动化、信息化程度越来越高&#xff0c; 单片机的应用领域也越来越广&#xff0c; 成为人们生活不可或缺的一部分。随省社会的发展、科技的进步以及人们生活水平的逐步提高&#xff0c;各种方便千生活的自动控制系统开始进入了人们的生活&#xff0c;以单片机为核…