Выбор ответа Middle Скользящее окно обновлено
Поиск анаграммы в строке
Вопрос
Найти все позиции в s, где начинается анаграмма строки p. Какой размер окна и что в нём хранить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Окно длины p.length, хранить счётчики букв. Анаграмма имеет ровно длину p, поэтому окно фиксированное.
Варианты ответа
- Окно переменной длины, в нём хранить Set букв
- Окно длины 1, сравнивать символы
sиpпо одному - Окно длины
s.length / 2, хранить отсортированную строку - Окно длины
p.length, хранить счётчики буквправильный ответ
Разбор
Анаграмма имеет ровно длину p, поэтому окно фиксированное. Храним частоты букв окна и сравниваем с частотами p (через счётчик совпадений за O(1) или массив из 26 за O(26)). Итого O(n).
- Set не учитывает количество повторов.
- Окно длины 1 не видит перестановок.
- Длина окна задана
p, а неs.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Скользящее окно»
- Самая длинная серия единиц с k заменами
- Перестановка как подстрока
- Самая длинная серия после k замен
- Самая длинная подстрока без повторов
- Максимальная сумма окна длины k
- Максимум гласных в окне
- Кратчайший подмассив с суммой ≥ target
- Самая короткая подстрока с k различными