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;
    }
}

性能

相关推荐
Dola_Zou1 天前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
啦啦啦啦啦zzzz1 天前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海1 天前
前端算法与手写题集
前端·算法
程序员阿鹏1 天前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
AI 思录1 天前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽1 天前
跨范式映射的稳定接口设计
人工智能·python·算法
郝学胜-神的一滴1 天前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio
2601_965742221 天前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
wordbaby1 天前
混合检索:两全其美的艺术
人工智能·算法
彧azz1 天前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法