Ctrl K

Лучший кусок длинного слова

Сложная
Дано слово word и число parts. Слово режут на parts непустых кусков подряд, не переставляя буквы. Каждый способ разрезания перебирается ровно один раз, и все куски из всех способов складываются в общую кучу. Верните кусок из кучи, который идёт последним в алфавитном (словарном) порядке. Из двух строк, где одна — начало другой, больше та, что длиннее. Слово может быть очень длинным, так что перебирать все куски напрямую не выйдет.
Пример 1
word="melon", parts=2 → 'on'

Кусок не длиннее 4 букв. Самая поздняя по алфавиту буква — o, но с неё начинается только "on". Всё равно "on" больше "melo" и "lon", ведь o идёт после m и l.

Пример 2
word="zzaz", parts=3 → 'zz'

Кусок не длиннее 2 букв. Лучший — "zz": он длиннее "z" и больше "za" и "az".

Пример 3
word="plum", parts=1 → 'plum'

Резать не нужно: единственный кусок — всё слово.

Ограничения
  • 1 ≤ len(word) ≤ 10⁶
  • word состоит из строчных латинских букв
  • 1 ≤ parts ≤ len(word)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗеркальная нарезка строки СложнаяПоследний кусок по алфавиту СложнаяСледующий зеркальный номер СложнаяПалиндром соседними обменами СложнаяНепересекающиеся длинные палиндромы Сложная
загружаем Python…
Вход
word="melon", parts=2
Ожидается
'on'

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