[LeetCode] 424. Longest Repeating Character Replacement

Chobby·2026년 2월 20일

LeetCode

목록 보기
998/1023

😎풀이

  1. 우측 포인터를 증가 시키며, 최빈 단어의 수 파악
  2. 현재 윈도우 크기 - 최빈 단어의 수가 k를 넘기는 경우 윈도우 사이즈 초과
    2-1. 좌측 포인터를 증가시켜 안정화 시킨 후 최대 길이 갱신
  3. 탐색된 연속성있는 문자열의 최대 길이 반환
function characterReplacement(s: string, k: number): number {
    const freq = new Map<string, number>()
    let left = 0
    let maxLen = 0
    let maxFreq = 0
    for(let right = 0; right < s.length; right++) {
        const curr = s[right]
        freq.set(curr, (freq.get(curr) ?? 0) + 1)
        maxFreq = Math.max(maxFreq, freq.get(curr))
        while(((right - left + 1) - maxFreq) > k) {
            freq.set(s[left], (freq.get(s[left]) ?? 1) - 1)
            left++
        }
        maxLen = Math.max(maxLen, right - left + 1)
    }
    return maxLen
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글