763.划分字母区间
划分字母区间
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。
返回一个表示每个字符串片段的长度的列表。
示例 1:
输入:s = “ababcbacadefegdehijhklij”
输出:[9,7,8]
解释:划分结果为 “ababcbaca”、”defegde”、”hijhklij”。每个字母最多出现在一个片段中。
示例 2:
输入:s = “eccbbbbdec”
输出:[10]
提示:
- 1 <= s.length <= 500
- s 仅由小写英文字母组成
解析
贪心算法。先记录每个字符最后出现的位置,然后遍历字符串,维护当前片段的最远边界。
1 | var partitionLabels = function (s) { |
时间复杂度 O(n),空间复杂度 O(1)(字符集大小固定为 26)。
763.划分字母区间
https://leetcode.lz5z.com/763.partition-labels/