Ctrl K

Ровные отрезки без скачков

Сложная
Дана строка text из строчных латинских букв и целое число times. Непустой отрезок строки (подряд идущие символы) назовём **ровным**, если выполнены оба условия: - каждая буква, которая в нём встречается, встречается ровно times раз; - любые две соседние буквы отрезка стоят в алфавите не дальше чем через две позиции друг от друга: например, a и c можно ставить рядом, а a и d — нельзя. Верните количество ровных отрезков в text. Отрезки на разных позициях считаются разными, даже если совпадают как строки.
Пример 1
text="aabbzz", times=2 → 4

Подходят "aa", "bb", "aabb" и "zz". Отрезок "bbzz" не годится: между b и z в алфавите слишком большой разрыв.

Пример 2
text="abcabc", times=1 → 15

Нужны отрезки, где каждая буква встречается ровно один раз: 6 отрезков длины 1, 5 длины 2 и 4 длины 3.

Пример 3
text="kkk", times=2 → 2

Подходит "kk" на позициях 0–1 и на позициях 1–2. Вся строка не годится: k в ней три раза.

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

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