代码随想录——划分字母区间(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;
    }
}
相关推荐
BUG?不,是彩蛋!4 小时前
Token 相关的高频面试题
面试·职场和发展·token
yuweiade4 小时前
【Spring】Spring MVC案例
java·spring·mvc
Zhansiqi5 小时前
day36花卉面试题目
面试·职场和发展
罗超驿5 小时前
Java数据结构_链表
java·数据结构·链表
小璐资源网5 小时前
C++中如何正确区分`=`和`==`的使用场景?
java·c++·算法
N1_WEB6 小时前
HDU:杭电 2018 复试真题汇总
算法
AMoon丶6 小时前
C++模版-函数模版,类模版基础
java·linux·c语言·开发语言·jvm·c++·算法
We་ct6 小时前
LeetCode 79. 单词搜索:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
二十雨辰6 小时前
[Java]RuoYi框架原理分析
java
东离与糖宝6 小时前
Java 玩转 AI 智能体性能优化:OpenClaw 高并发调用与 Token 成本控制实战
java·人工智能