代码随想录——划分字母区间(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;
    }
}
相关推荐
shughui几秒前
Python基础面试题:语言定位+数据类型+核心操作+算法实战(含代码实例)
开发语言·python·算法
王老师青少年编程10 分钟前
信奥赛C++提高组csp-s之拓扑排序详解
c++·算法·拓扑排序·csp·信奥赛·csp-s·提高组
zlp199212 分钟前
xxl-job java.sql.SQLException: interrupt问题排查(二)
java·开发语言
sunnyday042615 分钟前
深入理解Java日志框架:Logback与Log4j2配置对比分析
java·log4j·logback
浩瀚地学19 分钟前
【Java】异常
java·开发语言·经验分享·笔记·学习
kaikaile199519 分钟前
matlab计算流场
人工智能·算法·matlab
张np24 分钟前
java基础-LinkedHashMap
java·开发语言
老鼠只爱大米27 分钟前
LeetCode算法题详解 42:接雨水
leetcode·动态规划·双指针·单调栈·接雨水·雨水收集
3GPP仿真实验室32 分钟前
【Python源码】6G:PyTorch OFDM 教学仿真平台
算法
毕设源码-朱学姐33 分钟前
【开题答辩全过程】以 高校图书馆管理系统为例,包含答辩的问题和答案
java