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

Используйте скользящее окно: число замен равно длине окна минус максимальная частота буквы; сужайте окно, пока оно требует больше 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≥0. Каждый указатель движется только вперёд: O(n) времени, O(1) дополнительной памяти.

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

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

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

Подробнее