代码随想录——划分字母区间(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;
    }
}
相关推荐
网络工程小王6 小时前
【LangGraph 子图(Subgraph)详解】学习笔记
java·服务器·数据库·人工智能·langchain
小碗羊肉7 小时前
【JavaWeb | 第七篇】部门管理项目实战
java·开发语言·servlet
佳xuan7 小时前
简而言之c++
c++·算法
O&REO7 小时前
哈工大网安 / 信安 837 考研复试机试&面试重点 + 资料汇总
考研·面试·职场和发展
变量未定义~7 小时前
星际争霸、宝石塔的亮度差异、寻找食物储量
算法
YL200404267 小时前
027合并两个有序链表
java·数据结构·算法·链表
维诺菌7 小时前
claude code安装
java·开发语言·ai编程·calude
顶点多余7 小时前
自定义协议、序列化、反序列化实现
java·linux·开发语言·c++·tcp/ip
June bug7 小时前
【雅思】口语概述和答题思路
职场和发展·学习方法
小新同学^O^7 小时前
简单学习 --> SpringAOP
java·学习·spring·aop