LeetCode-830.较大分组的位置
在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。
例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。
分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。
我们称所有包含大于或等于三个连续字符的分组为 较大分组 。
找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。
https://leetcode.cn/problems/positions-of-large-groups/description/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def
largeGroupPositions(s):
n
, num, ret = len(s),
,
[]
for
i in range(n):
# 当遍历到最后一个元素,或者当前元素与下个元素不相同时,进行一次是否连续判定(相当于开始结算)
if
i == n -
or s[i] != s[i +
]:
# 当计数值大于等于3时,将其加入结果集,并将计数值num初始化成1
# 当计数值小于3,直接初始化num,重新计数。因为此时遍历到末尾元素或下一个元素与当前元素不同
if
num >=
:
ret
.append([i - num +
, i])
num
=
# 当没有遍历到最后一位或者存在连续字符时,计数值num+1
else
:
num
+=
return
ret
s
=
"abcdddeeeeaabbbcd"
print
(largeGroupPositions(s))
LeetCode-830.较大分组的位置
https://zhouyinglin.top/2022/12/22/LeetCode-830.较大分组的位置/