Python 中大型组的位置
pythonserver side programmingprogramming更新于 2023/11/9 20:42:00
假设有一个由小写字母组成的字符串 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]]