代码随想录——划分字母区间(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;
    }
}
相关推荐
布朗克1684 分钟前
38 Spring Boot入门——自动配置、核心注解与Starter机制
java·spring boot·后端
LuminousCPP11 分钟前
数据结构 - 单链表第一篇:单链表基础操作
c语言·数据结构·经验分享·笔记·学习
触底反弹11 分钟前
一文彻底搞懂 JavaScript 栈和队列(建议收藏)
javascript·算法·面试
沪漂阿龙13 分钟前
LangChain 系列:Structured Output结构化输出与源码解析
java·人工智能·架构·langchain
半夜燃烧的香烟16 分钟前
springboot3.0 集成minio上传文件,支持多个桶名
java·开发语言·spring boot
WL学习笔记17 分钟前
通讯录(顺序表实现)
c语言·数据结构·算法
JieE21227 分钟前
树与二叉树--JS实例
javascript·数据结构
J2虾虾28 分钟前
Android支持Java语言的标准
android·java·开发语言
To_OC29 分钟前
搞懂二叉树递归遍历,我居然是从爬楼梯开始的
前端·javascript·数据结构