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

划分字母区间【贪心算法】

  1. 划分字母区间
    给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
    注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。
    在这里插入图片描述
    参考下图:
    1.确定每个元素的最远距离索引
    2.遍历过程若当前索引等于当前遍历路径的最大索引时,说明找到了一个符合要求的子串。

在这里插入图片描述

class Solution {public List<Integer> partitionLabels(String s) {int[] hash = new int[26];//26个字母范围内char[] chars = s.toCharArray();//将字符串转化为字符数组,便于遍历操作for (int i = 0; i < chars.length; i++) {hash[chars[i] - 'a'] = i;//记录遍历过每个元素出现位置的最远距离对应的下标索引} int left = 0;//初始化第一个子串的起点int idx = 0;//记录路径上遍历元素最远距离的索引,初始化未0LinkedList<Integer> res = new LinkedList<>();//用链表存储有序的整数值for (int i = 0; i < chars.length; i++) {idx = Math.max(idx, hash[chars[i] - 'a']);//当前元素最远出现边界,遍历并取当前路径上最大的进行记录if (i == idx) {//找到了符合条件的res.add(idx - left + 1);//返回满足条件子串的长度left = i + 1;//更新下一个子串的起点}}return res;}
}
http://www.lryc.cn/news/149987.html

相关文章:

  • 低代码的探索之路
  • easyUI combobox不可手动输入和禁用
  • RV64和ARM64栈结构差异
  • 将 Python 与 RStudio IDE 配合使用(R与Python系列第一篇)
  • 数据库访问性能优化
  • vue 预览 有token验证的 doc、docx、pdf、xlsx、csv、图片 并下载
  • WPF数据视图
  • C++ new/delete 与 malloc/free 的区别?
  • 【数学建模】常微分,偏微分方程
  • 浙大数据结构之09-排序1 排序
  • Pydantic 学习随笔
  • 11 mysql float/double/decimal 的数据存储
  • 【高效数据结构——位图bitmap】
  • ArrayList LinkedList
  • iOS砸壳系列之三:Frida介绍和使用
  • Git学习——细节补充
  • 【设计模式】Head First 设计模式——装饰者模式 C++实现
  • layui实现数据列表的复选框回显
  • 关于使用RT-Thread系统读取stm32的adc无法连续转换的问题解决
  • 【启扬方案】启扬多尺寸安卓屏一体机,助力仓储物料管理系统智能化管理
  • Android Glide使用姿势与原理分析
  • 管理类联考——逻辑——汇总篇——知识点突破——形式逻辑——联言选言——真假
  • ChatGPT数据分析及作图插件推荐-Code Interpreter
  • 说说FLINK细粒度滑动窗口如何处理
  • 记一次反弹shell的操作【非常简单】
  • 如何排查 Flink Checkpoint 失败问题?
  • lazarus(pascal)和c语言读日志文件筛选保存为新文件
  • 学习JAVA打卡第四十九天
  • Golang数据结构和算法
  • python 装饰器