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]]

相关文章