代码随想录——划分字母区间(Leetcode763)

题目链接

贪心

java 复制代码
class Solution {
    public List<Integer> partitionLabels(String s) {
        int[] count = new int[27];
        Arrays.fill(count,0);
        // 统计元素最后一次出现的位置
        for(int i = 0; i < s.length(); i++){
            count[s.charAt(i) - 'a'] = i;
        }
        List<Integer> res = new ArrayList<Integer>();
        int left = 0;
        int right = 0;
        for(int i = 0; i < s.length(); i++){
            // 找到字符出现的最远边界
            right = Math.max(right, count[s.charAt(i) - 'a']);
            if(i == right){
                // 将符合条件的字符串长度插入res
                res.add(right - left + 1);
                left = i + 1;
            }
        }
        return res;
    }
}
相关推荐
Seven97几秒前
Tomcat Request请求处理过程:Connector
java
Mr数据杨几秒前
【Codex】搭建教学中心数据工作台统筹教案与课件资源
java·开发语言·django·codex·项目开发
阿正的梦工坊10 分钟前
认证、授权、JWT、密码哈希:Node.js 鉴权到底在做什么
算法·node.js·哈希算法
sali-tec10 分钟前
C# 基于OpenCv的视觉工作流-章67-线线间距
图像处理·人工智能·opencv·算法·计算机视觉
摇滚侠12 分钟前
Java 项目教程《黑马商城》服务治理 11 - 14
java·微服务·架构
一只大袋鼠14 分钟前
Spring 事务管理三种实现方式
java·数据库·spring·声明式事务
天真小巫15 分钟前
2026.5.7总结
职场和发展
TANGLONG22217 分钟前
【C++】STL基础必备:深入解析vector容器的实现(含源码)
c语言·开发语言·数据结构·c++·笔记·算法·stl
郝学胜-神的一滴19 分钟前
高并发秒杀系统设计全解:从需求拆解到Redis库存实战
java·数据库·redis·python·程序人生·缓存·php
50万马克的面包22 分钟前
C语言第3讲:分支和循环
c语言·开发语言·笔记·算法