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

力扣——划分字母区间

题目链接:

链接

题目描述:

在这里插入图片描述

思路:

  1. 要找到每一个字母的最大位置end,也是这一段的结尾位置
  2. 在这个最大位置内的字母,如果存在某个字母的最大位置 更大,就更新end为更大的
  3. 如果遍历到end,就说明这一段结束了

实现代码:

class Solution {
    public List<Integer> partitionLabels(String s) {
        List<Integer> ans = new ArrayList<>();

        int[] max = new int[26];
        //找到每个字母的最大位置
        for(int i = 0; i < s.length(); i++){
            max[s.charAt(i) - 'a'] = i;
        }

        int start = 0, end = 0;
        for(int i = 0; i < s.length(); i++){
            end = Math.max(max[s.charAt(i) - 'a'],end);
            //遍历到最大位置,说明这一段要结束了
            if(i == end){
                ans.add(end - start + 1);
                start = end + 1;//开始下一段
            }
        }
        return ans;
    }
}
http://www.dtcms.com/a/31609.html

相关文章:

  • 实验 Figma MCP + Cursor 联合工作流
  • (南京观海微电子)——码片与码元之间的关系
  • MATLAB中random函数用法
  • 功能全面的手机壁纸应用,种类齐全、众多高清壁纸
  • OpenHarmony包管理子系统
  • Linux lsblk 命令详解:查看磁盘和分区信息 (中英双语)
  • Spring Boot Validation 接口校验:从零到掌握
  • python中轻量级 LLM 应用开发框架 Promptic 如何有效进行对话管理?
  • AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
  • 基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】
  • DPVS-1:编译安装DPVS (ubuntu22.04)
  • DeepSeek-R1之三_基于RAGFlowAI托管平台在Docker中部署搭建本地AI知识库
  • 关于java中的BigInteger类
  • 区块链相关方法-波特五力分析模型
  • Eigen3开发入门指南:矩阵操作与核心功能详解
  • ChromeDriver版本不匹配问题的解决
  • Android Binder机制
  • Java 继承
  • hi3516cv610的isp调试专业名词
  • Spring Boot定时任务原理
  • 数据结构:实验题目:单链表归并。将两个非递减次序排列的单链表归并为一个非递增次序排列的单链表,并计算表长。要求利用原来两个单链表的结点存放合并后的单链表。
  • JVM 面试题相关总结
  • 设计模式教程:迭代器模式(Iterator Pattern)
  • 多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题
  • Andorid 学习 Compose UI(1):Box
  • sql function can not excute on QE slice 解决方案
  • 爬虫小案例豆瓣电影top250(json格式)
  • 如何将公钥正确添加到服务器的 authorized_keys 文件中以实现免密码 SSH 登录
  • 目标检测数据集-水果腐烂新鲜度检测数据集(适用YOLO全系列)
  • JavaScript函数-函数的参数