代码随想录——划分字母区间(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;
    }
}
相关推荐
IUGEI1 分钟前
深入解析HTTP长连接原理
java·网络·后端·网络协议·tcp/ip·http·https
q***64973 分钟前
头歌答案--爬虫实战
java·前端·爬虫
凌波粒4 分钟前
SpringMVC基础教程(4)--Ajax/拦截器/文件上传和下载
java·前端·spring·ajax
汤姆yu14 分钟前
基于springboot的电脑商城系统
java·spring boot·后端
2501_9411114618 分钟前
C++与硬件交互编程
开发语言·c++·算法
耳总是一颗苹果23 分钟前
数据结构---顺序表
数据结构
未若君雅裁29 分钟前
LeetCode 51 - N皇后问题 详解笔记
java·数据结构·笔记·算法·leetcode·剪枝
失散131 小时前
架构师级别的电商项目——2 电商项目核心需求分析
java·分布式·微服务·架构·需求分析
小王C语言1 小时前
优先算法---双指针和滑动窗口
数据结构
Tim_101 小时前
【算法专题训练】30、二叉树的应用
算法