424. Longest Repeating Character Replacement

Doyeon Kim·2022년 11월 12일

코딩테스트 공부

목록 보기
136/171

문제 링크 : 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
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글