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

贪心算法---划分字母区间

题目:

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

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

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

思路:非贪心思路

先遍历一遍字符串记录所有字母最后出现的下标,再遍历一遍字符串更新字符出现的最远下标,如果找到字符最远出现的位置下标和当前下标相等,则找到了分割点。

代码:

    public List<Integer> partitionLabels(String s) {int hash[]=new int[26];//记录每个字符的最后一次出现的下标List<Integer> result=new LinkedList<>();//记录最后的结果char[] chars=s.toCharArray();for(int i=0;i<chars.length;i++){hash[chars[i]-'a']=i;}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){result.add(right-left+1);//将该区间的长度加入结果集left=i+1;//更新下一个区间的左边界}}return result;}


http://www.mrgr.cn/news/15419.html

相关文章:

  • mysql集群从零开始搭建
  • 怎么解决 hash 碰撞,用 C++ 实现 hashMap?
  • Docker原理及实例
  • 计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战
  • linux:网络编程之TCP
  • day02 1.c++对c的扩充
  • 【ShuQiHere】微调与训练恢复:理解 `load_weights` 和 `save_model` 的实用方法
  • 【Linux入门】shell基础篇——数组
  • glance学习小结
  • 在Ubuntu24.04上安装多主多从的高可用Kubernetes节点
  • 掌握Nginx负载均衡中的请求缓存处理:策略与实现
  • 轻松掌握 ViewPager2:打造流畅的页面切换体验
  • 基于PHP+MySQL组合开发的微信投票小程序 带完整的安装代码包以及搭建教程
  • 【推荐】Linux 推荐软件
  • 【iOS】iOS中简单的网络请求
  • LIN诊断(4)——Tp层函数LINtp.dll应用
  • 探索Edge-TTS与WebSocket集成:打造实时语音交互系统
  • 如何根据oom的信息找到对应的POD
  • 深入解析Nginx负载均衡中的`down`指令及其应用
  • three.js 着色器学习 聚集地