Ctrl K

Кусочки алфавитного кольца

Средняя
Запишите латинский алфавит по кругу: после z снова идёт a, и так бесконечно в обе стороны: ...xyzabcd...xyzabc.... Дана строка text из строчных латинских букв. Посчитайте, сколько **различных** непустых подстрок text встречаются в этой бесконечной записи, то есть состоят из букв, каждая из которых идёт в алфавите сразу за предыдущей (с переходом от z к a). Одинаковые подстроки, найденные в разных местах text, считаются один раз.
Пример 1
text='xyzab' → 15

Вся строка идёт по кругу алфавита подряд: x→y→z→a→b. Подходит любая её подстрока, а их 5 + 4 + 3 + 2 + 1 = 15, и все разные.

Пример 2
text='abab' → 3

Подходят «a», «b» и «ab». «ba» не подходит: после b в алфавите идёт c. Повторы считаются один раз — итого 3.

Пример 3
text='dog' → 3
Ограничения
  • 1 ≤ text.length ≤ 10⁵
  • text состоит только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный зеркальный кусок СредняяВсе правильные скобочные строки СредняяНаименьшее число правок СредняяСколькими способами прочитать шифр СредняяСплести две строки Средняя
загружаем Python…
Вход
text='xyzab'
Ожидается
15

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