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

Python의 주어진 문자열에서 두 번 이상 발생하는 k 길이의 하위 문자열을 계산하는 프로그램

<시간/>

문자열 s와 숫자 k가 있다고 가정하고 s에서 두 번 이상 발생하는 k-길이 부분 문자열sof s의 수를 찾아야 합니다.

따라서 입력이 s ="xxxyyy", k =2와 같으면 출력은 2가 됩니다.

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

  • 본 :=새 목록
  • 0에서 s - k 크기의 범위에 있는 i에 대해
    • t :=s의 부분 문자열 [인덱스 i에서 i + k - 1까지]
    • 본 끝에 t 삽입
  • mp :=보이는 모든 고유한 요소 및 해당 발생에 대한 지도
  • 발생이 1보다 큰 mp에서 각 요소의 모든 발생 합계를 반환

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

예시

class Solution:
   def solve(self, s, k):
      from collections import Counter
      seen = []
      for i in range(len(s) - k + 1):
         t = s[i : i + k]
         seen.append(t)
         s = Counter(seen)
      return sum(1 for x in s.values() if x > 1)
ob = Solution()
print(ob.solve("xxxyyy",2))

입력

"xxxyyy",2

출력

2