문제 링크 : https://leetcode.com/problems/longest-repeating-character-replacement/description/
문자 s와 문자를 바꿀 수 있는 개수 K가 주어질 떄 문자를 바꾸고 최대 문자의 길이를 구하여라
ex
s = "AABABBA", k = 1
3번쨰 인덱스 a를 (b로) 바꾸고 가장 긴 repeating chr인 'bbbb' 의 개수인 4를 반환한다.
일단 가장 긴 repeating chr 부분을 counter함수를 이용하여 구한다.
그리고 예를 들어 바꿔야할 긴 부분('BABB') 의 길이 - b의 개수 3 =을 뺴면 1개를 바꿔야 함을 알 수 있다. 따라서 k를 1 감소 시킼ㄴ다.
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
maxlen, winlen = 0 ,0
length = collections.Counter()
for i in range(len(s)):
length[s[i]] +=1
winlen = max(winlen, length[s[i]])
if maxlen - winlen<k:
maxlen+=1
else:
length[s[i-maxlen]] -=1
return maxlen