Solution 1Sliding Window

public int characterReplacement(String s, int k) {
    int[] freq = new int[26];
    int start = 0, count = 0;
    for (int end = 0; end < s.length(); end++) {
        freq[s.charAt(end) - 'A']++;
        count = Math.max(count, freq[s.charAt(end) - 'A']);
        if ( end - start + 1  >  count + k ) {
            freq[s.charAt(start) - 'A']--;
            start++;
        }
    }
    return s.length() - start;
}
Leet Code/java.java · L478–491
var characterReplacement = function(s,k) {
    let window = {}, i = 0, maxLen = 1;
    for (let j=0; j<s.length; j++) {
        if (s[j] in window) { 
            window[s[j]] += 1;
            maxLen = Math.max(maxLen, window[s[j]])
        } else {
            window[s[j]] = 1;
        }
        if (j-i+1 > maxLen+k) {
            window[s[i]] -= 1;
            i++;
        }
    }
    return s.length - i
};
Leet Code/javascript.js · L3–19