代码随想录——划分字母区间(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;
    }
}
相关推荐
悟空码字16 小时前
【保姆级】实现APP分享至微信,看完就能落地
java·后端·微信
2501_9249526916 小时前
C++中的枚举类高级用法
开发语言·c++·算法
常利兵16 小时前
Android 开发探秘:View.post()为何能获取View宽高
java·数据库·sql
闭关苦炼内功16 小时前
使用Java语言实现二分查找
java·开发语言
毕设源码-郭学长16 小时前
【开题答辩全过程】以 基于Spring Boot“活力青春”健身房管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
2401_8732046516 小时前
代码覆盖率工具实战
开发语言·c++·算法
m0_4750645016 小时前
Spring AI RAG简易demo
java·人工智能·spring
xht083216 小时前
PHP vs C++:编程语言终极对决
java·开发语言
少司府16 小时前
C++基础入门:第一个C++程序
java·c语言·开发语言·c++·ide
不染尘.16 小时前
欧拉路径算法
开发语言·数据结构·c++·算法·图论