大型团体在Python中的位置
假设存在一个由小写字母组成的字符串S,这些字母形成相同字符的连续组。因此,当像S这样的字符串像“abbxxxxzyy”具有组“a”,“bb”,“xxxx”,“z”和“yy”时。当一个小组有3个或更多字符时,将是一个大小组。我们希望每个大团体的起点和终点。
因此,如果输入类似于“abcdddeeeeaabbbcd”,则输出将为[[3,5],[6,9],[12,14]]
为了解决这个问题,我们将遵循以下步骤-
ans:=一个新列表
csum:=0
对于连续字母中的字母组中的每个a,b,
将(csum,csum+grp的大小-1)插入列表
grp:=分组项目列表
如果grp的大小>=3,则
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]]