Ctrl K

Самый частый короткий фрагмент

Средняя
Дана строка text и три числа: max_distinct, min_len и max_len. Фрагментом называется непустая подстрока из подряд идущих символов. Фрагмент считается допустимым, если: - его длина не меньше min_len и не больше max_len; - в нём не больше max_distinct различных букв. Найдите допустимый фрагмент, который встречается в text чаще всех, и верните число его вхождений. Вхождения могут перекрываться. Если допустимых фрагментов нет, верните 0.
Пример 1
text='abcabcab', max_distinct=3, min_len=2, max_len=3 → 3

Фрагмент «ab» встречается три раза (с позиций 0, 3 и 6), ни один другой допустимый фрагмент не встречается чаще.

Пример 2
text='zzzzz', max_distinct=1, min_len=2, max_len=4 → 4

«zz» встречается с позиций 0, 1, 2 и 3 — вхождения могут перекрываться, поэтому ответ 4.

Пример 3
text='abcd', max_distinct=1, min_len=2, max_len=2 → 0

В каждом фрагменте длины 2 две разные буквы, а разрешена только одна, поэтому подходящих фрагментов нет.

Ограничения
  • 1 ≤ len(text) ≤ 3·10⁵
  • text состоит только из строчных латинских букв
  • 1 ≤ max_distinct ≤ 26
  • 1 ≤ min_len ≤ max_len ≤ min(26, len(text))
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный фрагмент без повторов СредняяОтрезок из двух букв СредняяПовторяющиеся участки гена СредняяОкно с ограниченным набором букв СредняяКаждая буква не реже k раз Средняя
загружаем Python…
Вход
text='abcabcab', max_distinct=3, min_len=2, max_len=3
Ожидается
3

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