Ctrl K

Кратчайший отрезок со всеми буквами

Сложная
Даны строки text и letters. Найдите в text самый короткий непрерывный отрезок, в котором встречаются все символы из letters с учётом повторов: если буква входит в letters дважды, в отрезке она тоже должна встретиться хотя бы дважды. Заглавные и строчные буквы различаются. Верните этот отрезок. Если кратчайших подходящих отрезков несколько, верните тот, что начинается левее. Если подходящего отрезка нет, верните пустую строку. Попробуйте решить за O(len(text) + len(letters)).
Пример 1
text='xmaybxazmy', letters='mzy' → 'zmy'

Отрезок «zmy» (позиции 7–9) содержит m, z и y, и короче него подходящих отрезков нет.

Пример 2
text='bob', letters='Bo' → ''

Регистр важен: заглавной B в тексте нет, поэтому ответ — пустая строка.

Пример 3
text='kaakak', letters='kka' → 'kak'

Нужны две буквы k и одна a. Подходят «kaak» и «kak»; из отрезков длины 3 подходит только «kak» — в «kaa», «aak» и «aka» по одной k.

Ограничения
  • 1 ≤ len(text), len(letters) ≤ 10⁵
  • text и letters состоят из заглавных и строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлоки слов в любом порядке СложнаяСамый длинный чистый фрагмент СложнаяРовные отрезки без скачков СложнаяПодстроки, вмещающие набор букв: большие данные СложнаяБуква набирает k повторов: большие данные Сложная
загружаем Python…
Вход
text='xmaybxazmy', letters='mzy'
Ожидается
'zmy'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 83 теста на сервере, включая скрытые.