Python 中大块的位置
假设有一个小写字母字符串 S,这些字母形成连续的相同字符组。因此,当一个字符串像 S 一样像“abbxxxxzyy”时,则有组“a”、“bb”、“xxxx”、“z”和“yy”。当组中有 3 个或更多字符时,该组将是大组。我们想要每个大组的起始位置和结束位置。
因此,如果输入像“abcdddeeeeaabbbcd”一样,则输出将是 [[3,5],[6,9],[12,14]]
为了解决这个问题,我们将遵循以下步骤 -
- ans := 新列表
- csum := 0
- 对于每个带有连续字母的字母的 a、b 对,执行
- grp := 分组的项目列表
- 如果 grp 的大小 >= 3,则
- 将包含 (csum,csum + grp 的大小 - 1) 的列表插入到 ans 中
- csum := csum + grp 的大小
- 返回 ans
让我们看看以下实现以加深理解 -
示例
from itertools import groupby class Solution: def largeGroupPositions(self, S): ans = [] csum = 0 for a, b in groupby(S): grp = list(b) if len(grp) >= 3: ans.append([csum, csum+len(grp)-1]) csum+=len(grp) return ans ob = Solution() print(ob.largeGroupPositions("abcdddeeeeaabbbcd"))
输入
"abcdddeeeeaabbbcd"
输出
[[3, 5], [6, 9], [12, 14]]
广告