当前位置: 首页 > 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;
    }
}

相关文章:

  • 实验 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定时任务原理
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 习近平会见古巴国家主席迪亚斯-卡内尔
  • 庆祝上海总工会成立100周年暨市模范集体劳动模范和先进工作者表彰大会举行,陈吉宁寄予这些期待
  • 近4小时会谈、3项联合声明、20多份双边合作文本,中俄元首今年首次面对面会晤成果颇丰
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?