/**
 * @param {string} s
 * @param {number} k
 * @return {number}
 */
const characterReplacement = (s, k) => {
  let max = 0, maxF = 0, char = s.split(""), map = new Map(), l = 0, r = 0;

  while (r < char.length) {
    let newC = (map.get(char[r]) || 0) + 1;
    map.set(char[r], newC)
    maxF = Math.max(maxF, newC);

    if (((r - l + 1) - maxF) > k) {
      map.set(char[l], map.get(char[l]) - 1);
      l++;
    }

    max = Math.max(max, (r - l + 1));

    r++;
  }

  return max;
}