代码随想录——划分字母区间(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;
    }
}
相关推荐
悲伤小伞21 小时前
LeetCode 热题 100_4-283. 移动零
算法·leetcode·职场和发展
东南门吹雪21 小时前
Spring事务传播机制深度解析
java·数据库·spring
星 海21 小时前
网络芯片对IP地址最长前缀匹配算法的实现
网络·算法
XS03010621 小时前
Java基础 List集合
java·windows·list
凤凰院凶涛QAQ21 小时前
《C++转Java快速入手系列》抽象类和接口篇
java·开发语言·c++
OYangxf21 小时前
力扣hot100【滑动窗口】
算法·leetcode·职场和发展
MuYiLuck21 小时前
01-spring-boot-autoconfig-principle
java·spring·maven·自动配置
河阿里21 小时前
Lambda表达式(Java):从语法本质到工程实践
java·开发语言
CQU_JIAKE21 小时前
5.7【A】
算法
2zcode21 小时前
基于SVM与HOG算法的行人检测系统设计与实现
算法·机器学习·支持向量机