Войти Регистрация
Алгоритмы

194. Фрагмент журнала, повторённый k раз

Сложная

Журнал платёжного шлюза Сбера склеен в одну строку log из латиницы и цифр. Повторяющиеся куски — признак зацикленного ретрая.

Верните длину самой длинной подстроки, которая встречается в log не меньше k раз. Вхождения могут перекрываться. Если даже одиночный символ не встречается k раз, верните 0.

В работе: Мониторинг смотрит на 100 КБ журнала за минуту: кусок из 300 символов, повторённый 5 раз, — это один и тот же упавший запрос, а сравнивать все пары подстрок — 10¹⁰ операций.

Пример 1

Ввод
log = "errAerrBerrA"
k = 2
Вывод
4

«errA» встречается дважды, пятисимвольных повторов нет.

Пример 2

Ввод
log = "aaaa"
k = 3
Вывод
2

«aa» входит трижды с перекрытием: с позиций 0, 1, 2.

Ограничения

  • 1 ≤ длина log ≤ 10⁵
  • 2 ≤ k ≤ длина log
  • символы — латиница и цифры
  • Лимит — 3 с на тест (3000 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def longest_k_repeat(log, k):
СтрокиПолиномиальный хешБинарный поиск по ответуцельO(n log n)

Источник: наша задача на данных Сбера. Условие пересказано своими словами.