Computer >> Máy Tính >  >> Lập trình >> Python

Vị trí của các nhóm lớn trong Python

Giả sử có một chuỗi S gồm các chữ cái viết thường, các chữ cái này tạo thành các nhóm liên tiếp có cùng một ký tự. Vì vậy, khi một chuỗi như S giống như "abbxxxxzyy" có các nhóm "a", "bb", "xxxx", "z" và "yy". Một nhóm sẽ là một nhóm lớn khi có từ 3 ký tự trở lên. Chúng tôi muốn các vị trí bắt đầu và kết thúc của mọi nhóm lớn.

Vì vậy, nếu đầu vào là "abcdddeeeeaabbbcd", thì đầu ra sẽ là [[3,5], [6,9], [12,14]]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=một danh sách mới
  • csum:=0
  • đối với mỗi a, b trong nhóm các chữ cái có các chữ cái liên tiếp, hãy thực hiện
    • grp:=danh sách mục được nhóm
    • nếu kích thước của grp> =3, thì
      • chèn một danh sách có (csum, csum + kích thước của grp - 1) vào ans
    • csum:=csum + kích thước của grp
  • trả lại ans

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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"))

Đầu vào

"abcdddeeeeaabbbcd"

Đầu ra

[[3, 5], [6, 9], [12, 14]]