LeetCode 763、划分字母区间

题目:

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

思路:本质合并区间

代码:

java 复制代码
class Solution {
    public List<Integer> partitionLabels(String s) {
        char[] ch = s.toCharArray();
        int n = ch.length;
        int[] last = new int[26];
        for (int i = 0; i < n; i++) {
            last[ch[i] - 'a'] = i;
        }
        List<Integer> ans = new ArrayList<>();
        int start = 0;
        int end = 0;
        for (int i = 0; i < n; i++) {
            end = Math.max(end, last[ch[i] - 'a']);
            if (i == end ) {
                ans.add(i - start + 1);
                start = end + 1;
            }
        }
        return ans;
    }
}

性能:

相关推荐
程序猿打工仔11 分钟前
计算机基础(C语言)考编、专技岗
c语言·开发语言·算法
通信小呆呆32 分钟前
电子战干扰技术:从“蛮力压制”到“精准欺骗”,再到“认知博弈”
算法·通信·isac
老师我太想进步了20261 小时前
【数据结构-6】算法美学之单链表(1)
数据结构·算法
希望我万事顺遂2 小时前
力扣hot100-滑动窗口最大值
数据结构·算法·leetcode
꧁细听勿语情꧂2 小时前
二叉树余题,排序、直接插入排序、希尔排序
c语言·开发语言·数据结构·算法
是main不是漫3 小时前
【双指针|LeetCode1089 复写零】巧用逆向思路,破解原地覆盖陷阱
数据结构·算法·leetcode
专注仿真12 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
罗西的思考13 小时前
【轻量化复刻大模型 / KIMI K3】AttnRes 模块交互式演示
人工智能·算法·机器学习
好悬给我拽开线17 小时前
ZILOT 论文解析
算法
饮水桶_T18 小时前
JAVA IO流笔记
开发语言·数据结构·算法