代码随想录——划分字母区间(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;
    }
}
相关推荐
OtIo TALL19 小时前
redis7 for windows的安装教程
java
Sam_Deep_Thinking19 小时前
学数据结构到底有什么用
数据结构
kobesdu19 小时前
人形机器人SLAM:技术挑战、算法综述与开源方案
算法·机器人·人形机器人
uNke DEPH19 小时前
Spring Boot的项目结构
java·spring boot·后端
xixingzhe219 小时前
idea启动vue项目
java·vue.js·intellij-idea
wzl2026121320 小时前
企业微信定时群发技术实现与实操指南(原生接口+工具落地)
java·运维·前端·企业微信
凌波粒20 小时前
Java 8 “新”特性详解:Lambda、函数式接口、Stream、Optional 与方法引用
java·开发语言·idea
曹牧20 小时前
Eclipse:悬停提示(Hover)
java·ide·eclipse
oyzz12020 小时前
Spring EL 表达式的简单介绍和使用
java·后端·spring
椰羊~王小美21 小时前
随机数概念及算法
算法