Leetcode每日一题2020.10.22第763题:划分字母区间

763.划分字母区间

题目描述

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-labels/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例:

在这里插入图片描述

思路:

由于同一个字母最多只能出现在一个片段中,所以每一个字母第一次出现的下标和其最后一次出现的下标必须在同一个片段中。因此,需要遍历整个字符串,得到每个字母最后一次出现的下标。
1、设两个指针start和end初始值都为0,每次遍历时维护这两个指针。
2、对于每一个字母最后一次出现时的下标end1,每一个片段的长度不可能超过该end1,即片段的结束点end = max(max,end1)。当遍历到end时,一个片段结束,将片段长度(end - start + 1)加入到待输出列表中。
3、下一个片段的start为上一个片段的(end + 1)
4、重复上述操作
PS:详细代码解释见代码注释
在这里插入图片描述
**

知识点:enumerate()函数

**
作用:将一个可遍历的数据对象(如列表、元组或字符串等)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环中
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51210480/article/details/109242614