문자열 s가 있다고 가정하고 최대 2개의 고유한 문자를 포함하는 가장 긴 부분 문자열의 길이를 찾아야 합니다.
따라서 입력이 s ="xyzzy"와 같으면 출력은 4가 됩니다. "yzzy"는 최대 2개의 고유 문자가 있는 가장 긴 부분 문자열이기 때문입니다.
이 문제를 해결하기 위해 다음 단계를 따르겠습니다-
-
시작 :=0
-
c :=지도
-
답변 :=0
-
범위 0에서 s까지의 끝을 위해
-
c[s[end]] :=c[s[end]] + 1
-
c> 2인 동안 수행
-
c[s[시작]] :=c[s[시작]] - 1
-
c[s[start]]가 0이면
-
삭제 c[s[start]]
-
-
시작 :=시작 + 1
-
-
ans :=ans의 최대값 및 (end - start + 1)
-
-
반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): from collections import Counter start = 0 c = Counter() ans = 0 for end in range(len(s)): c[s[end]] += 1 while len(c) > 2: c[s[start]] -= 1 if not c[s[start]]: del c[s[start]] start += 1 ans = max(ans, end - start + 1) return ans ob = Solution() s = "xyzzy" print(ob.solve(s))
입력
s = "xyzzy"
출력
4