Ctrl K

Подстроки, вмещающие набор букв: большие данные

Сложная
Даны две строки: text и kit. Строка kit — это набор букв (с учётом повторов). Подстрока text подходит, если из её букв можно выложить весь набор: каждая буква встречается в подстроке не реже, чем в kit. Иными словами, буквы подстроки можно переставить так, чтобы она начиналась с kit. Посчитайте, сколько непустых подстрок text подходят. Подстроки в разных позициях считаются разными. Строка text может быть длиной до миллиона символов, так что нужно решение за линейное время.
Пример 1
text="banana", kit="nab" → 4

Подстрока должна содержать b, поэтому начинается с позиции 0, а n впервые встречается на позиции 2. Подходят "ban", "bana", "banan" и "banana".

Пример 2
text="aaaa", kit="aa" → 6

Подходит любая подстрока длиной от 2: три длины 2, две длины 3 и одна длины 4.

Пример 3
text="abc", kit="abcd" → 0
Ограничения
  • 1 ≤ len(text) ≤ 10⁶
  • 1 ≤ len(kit) ≤ 10⁴
  • Обе строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлоки слов в любом порядке СложнаяКратчайший отрезок со всеми буквами СложнаяСамый длинный чистый фрагмент СложнаяРовные отрезки без скачков СложнаяБуква набирает k повторов: большие данные Сложная
загружаем Python…
Вход
text="banana", kit="nab"
Ожидается
4

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