大型团体在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]]