代码随想录——划分字母区间(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;
    }
}
相关推荐
June bug16 小时前
ISTQB CT-GenAI v1.0 K1/K2/K3 考点清单
经验分享·职场和发展·学习方法
tankeven16 小时前
HJ131 数独数组
c++·算法
liuyao_xianhui16 小时前
优选算法_丢失的数字_位运算_C++
linux·数据结构·c++·算法·动态规划·哈希算法·散列表
woniu_buhui_fei16 小时前
Java 服务最常见的线上性能故障
java·jvm·算法
sali-tec16 小时前
C# 基于OpenCv的视觉工作流-章37-区域截图
图像处理·人工智能·opencv·算法·计算机视觉
967716 小时前
Java 类映射数据库表的核心规则
java·数据库·oracle
DeepModel16 小时前
【概率分布】正态分布(高斯分布)原理、可视化与机器学习实战
python·算法·概率论
啊哦呃咦唔鱼16 小时前
LeetCode hot100-239 滑动窗口最大值
数据结构·算法·leetcode
阳光下的米雪17 小时前
存储过程的使用以及介绍
java·服务器·数据库·pgsql
yoyo_zzm17 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot