当前位置: 首页 > news >正文

贪心----4.划分字母区间

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

/**

        首先遍历一遍字符串,记录每个字符最后出现的位置(不断迭代字符出现的位置即可)

        再次遍历字符数组,维护一个变量end,代表已出现元素最后一个位置,

        当end == i时,代表当前所有已经出现元素都囊括其中

*/

class Solution {/**首先遍历一遍字符串,记录每个字符最后出现的位置(不断迭代字符出现的位置即可)再次遍历字符数组,维护一个变量end,代表已出现元素最后一个位置,当end == i时,代表当前所有已经出现元素都囊括其中*/private List<Integer> result = new ArrayList<>();public List<Integer> partitionLabels(String s) {//将字符串转化为字符数组,便于得出字符出现的位置char c[] = s.toCharArray();//用于记录元素最后出现位置int lastIndex[] = new int[26];//遍历字符数组,得出每个元素最后出现位置for(int i = 0; i < c.length; i++) {lastIndex[c[i] - 'a'] = i;}//再次遍历字符数组,维护一个变量end,记录已出现元素的最后一个位置,int end = 0,start = 0;for(int i = 0; i < c.length; i++) {//已出现元素的最后一个位置end = Math.max(end,lastIndex[c[i] - 'a']);//当end == i时,代表当前所有已经出现元素都囊括其中,即得出一个片段if(end == i) {result.add(end - start + 1);start = end + 1; //下一个片段的开始位置}}return result;}
}

http://www.dtcms.com/a/327804.html

相关文章:

  • 方格网法土方计算不规则堆体
  • [ 前端JavaScript的事件流机制 ] - 捕获、冒泡及委托
  • 少数民族文字OCR识别技术实现及应用场景剖析
  • JMeter并发测试与多进程测试
  • __base__属性
  • ETCD的简介和使用
  • 42.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(一)
  • 1513-map 的三种声明定义方式 使用方式
  • BN层:深度学习中的“数据稳定器”,如何解决训练难题?
  • 基于C#的二手服装交易网站的设计与实现/基于asp.net的二手交易系统的设计与实现/基于.net的闲置物品交易系统的设计与实现
  • 嵌入式Linux学习 -- 软件编程3
  • UNet改进(32):结合CNN局部建模与Transformer全局感知
  • Docker 101:面向初学者的综合教程
  • 【C#】从 Queue 到 ConcurrentQueue:一次对象池改造的实战心得
  • 激活函数篇(2):SwiGLU | GLU | Swish | ReLU | Sigmoid
  • 如何查看当前Redis的密码、如何修改密码、如何快速启动以及重启Redis (Windows)
  • 鹧鸪云:光伏施工流程管理的智能“导航仪”
  • 云平台监控-云原生环境Prometheus企业级监控实战
  • 【Redis与缓存预热:如何通过预加载减少数据库压力】
  • RoboNeo美图AI助手
  • 如何单独修改 npm 版本(不改变 Node.js 版本)
  • npm、pnpm、yarn区别
  • 深度解析Mysql的开窗函数(易懂版)
  • docker-compose安装ElasticSearch,ik分词器插件,kibana【超详细】
  • 夜莺开源监控,模板函数一览
  • 集合,完整扩展
  • 任务调度系统设计与实现:Quartz、XXL-JOB 和 Apache Airflow 对比与实践
  • 【项目设计】高并发内存池
  • windows系统端口异常占用删除教程
  • Go面试题及详细答案120题(0-20)