문자열 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