代码随想录——划分字母区间(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;
    }
}
相关推荐
Yingye Zhu(HPXXZYY)8 分钟前
洛谷B4337 [中山市赛 2023] 简单数学题
c++·算法
郝学胜-神的一滴10 分钟前
C++11 工程级应用 12:编译期类型魔法,干掉重复与臃肿的代码
开发语言·数据结构·c++·软件工程·visual studio
CoderYanger13 分钟前
Java EE 进阶:2.3 JavaScript 综合案例
java·前端·javascript·css·职场和发展·java-ee·html
starzy199016 分钟前
Flink TimeWindow 详解及代码实现:从三种时间语义到滚动与滑动窗口
java·服务器·flink
kyle~17 分钟前
数据结构---红黑树
数据结构
pen-ai17 分钟前
【优化方法】为什么梯度是最陡峭的方向?
人工智能·算法·机器学习·最小二乘法
重生之小比特18 分钟前
【Java SE】类和对象(一)
java·ide·intellij-idea
个 人 练 习 生20 分钟前
数据结构:排序算法详解
c语言·数据结构·经验分享·学习·算法·排序算法
captain37624 分钟前
网络原理(4)-TCP
java·服务器·网络·网络协议·tcp/ip·java-ee
青山木27 分钟前
枚举类DP进阶:完全平方数与零钱兑换
java·数据结构·算法·leetcode·动态规划