代码随想录——划分字母区间(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;
    }
}
相关推荐
八解毒剂11 小时前
查找-从二分查找到二叉排序树
数据结构·c++·算法
Knight_AL12 小时前
深入理解 ForkJoinPool、parallelStream、CompletableFuture:从原理到生产最佳实践(含百万订单统计实战)
java
程序猿追12 小时前
画个饼,给数据点颜色看看——在 HarmonyOS 模拟器上手搓一个饼图/环形图组件
深度学习·算法·harmonyos
秦明月1312 小时前
EPLAN部件库整理之维护篇----部件库整理收尾:做好日常维护,再也不用反复重做
经验分享·其他·职场和发展·学习方法·设计规范
王五周八12 小时前
玩转 Spring AI Agent:基于 SpringBoot 集成 AI 工具与 Skills 能力实践
java·spring
小锋java123412 小时前
【技术专题】LangChain4j 开发Java Agent智能体 - 会话记忆
java·人工智能
net3m3312 小时前
mymalloc函数里增加memset来初始化数据 全为0,能解决一些奇怪的问题,
算法
计算机安禾12 小时前
【算法分析与设计】第43篇:空间复杂度类与Savitch定理
java·服务器·网络·数据库·算法
圣保罗的大教堂12 小时前
leetcode 3751. 范围内总波动值 I 中等
leetcode