Выбор ответа Senior Скользящее окно обновлено

Минимальное окно: условие сжатия

Вопрос

Задача: минимальная подстрока s, содержащая все символы t с учётом повторов. Когда сжимать окно слева?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Пока окно покрывает все символы t с повторами, обновляя ответ. Держим missing: сколько символов t ещё не покрыто.

Варианты ответа

  1. Всегда сразу после добавления очередного символа справа
  2. Пока окно покрывает все символы t с повторами, обновляя ответправильный ответ
  3. Только когда длина окна стала больше t.length
  4. Когда встретили символ, которого нет в строке t

Разбор

Держим missing: сколько символов t ещё не покрыто. Пока missing === 0, окно валидно: записываем ответ и сдвигаем левый край. Как только окно перестало покрывать t, расширяем вправо. O(|s| + |t|).

  • Сжатие всегда потеряет валидные окна.
  • Длина больше t.length не гарантирует покрытия.
  • Лишние символы внутри окна допустимы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме