LeetCode #424 — Дана строка из заглавных английских букв и число k. За не более чем k замен найти длину самой длинной подстроки, которую можно сделать состоящей из одинаковых символов.

Используйте скользящее окно: нужное число замен равно длине окна минус частота самой частой буквы.

Короткий ответ

Что ответить на собеседовании

Используйте скользящее окно: нужное число замен равно длине окна минус частота самой частой буквы.

Подробный разбор

Ответ с пояснениями

Используйте скользящее окно: нужное число замен равно длине окна минус частота самой частой буквы.

Когда замен требуется больше k, сдвигайте левую границу. Для фиксированного алфавита из 26 букв можно пересчитывать максимум без усложнения доказательства.

function characterReplacement(s, k) {
  const counts = Array(26).fill(0);
  let left = 0, best = 0;
  for (let right = 0; right < s.length; right++) {
    counts[s.charCodeAt(right) - 65]++;
    while (right - left + 1 - Math.max(...counts) > k) {
      counts[s.charCodeAt(left++) - 65]--;
    }
    best = Math.max(best, right - left + 1);
  }
  return best;
}

Вход соответствует условию: A–Z и неотрицательное целое k. Время O(26n), то есть O(n) для данного алфавита, память O(26).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее