Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 큰 그룹의 위치

<시간/>

소문자로 된 문자열 S가 있다고 가정하고 이러한 문자는 동일한 문자의 연속적인 그룹을 형성합니다. 따라서 S와 같은 문자열이 "abbxxxxzyy"와 같을 때 그룹은 "a", "bb", "xxxx", "z" 및 "yy"입니다. 그룹은 3자 이상의 문자가 있는 경우 큰 그룹이 됩니다. 우리는 모든 대규모 그룹의 시작 위치와 끝 위치를 원합니다.

따라서 입력이 "abcdddeeeeaabbbcd"와 같으면 출력은 [[3,5],[6,9],[12,14]]

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • ans :=새 목록
  • csum :=0
  • 각, b에 대해 연속 문자로 된 문자 그룹을 만들려면 do
    • grp :=그룹화된 항목 목록
    • grp의 크기가 3이면
      • (csum,csum + grp 크기 - 1)을 사용하여 목록을 ans에 삽입
    • csum :=csum + grp 크기
  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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