代码随想录——划分字母区间(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;
    }
}
相关推荐
你的冰西瓜1 分钟前
C++ 中最短路算法的详细介绍
c++·算法·图论·最短路
zstar-_7 分钟前
【算法笔记】6.LeetCode-Hot100-链表专项
笔记·算法·leetcode
Swift社区13 分钟前
Swift 图论实战:DFS 算法解锁 LeetCode 323 连通分量个数
算法·swift·图论
<但凡.16 分钟前
数据结构与算法之美:广义表
数据结构·c++·算法
EnigmaCoder18 分钟前
Java多线程:核心技术与实战指南
java·开发语言
攀小黑22 分钟前
阿里云 使用TST Token发送模板短信
java·阿里云
前端极客探险家27 分钟前
告别卡顿与慢响应!现代 Web 应用性能优化:从前端渲染到后端算法的全面提速指南
前端·算法·性能优化
麦兜*27 分钟前
Spring Boot秒级冷启动方案:阿里云FC落地实战(含成本对比)
java·spring boot·后端·spring·spring cloud·系统架构·maven
自由鬼1 小时前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理
程序员Xu1 小时前
【OD机试题解法笔记】连续出牌数量
笔记·算法·深度优先