m[x]: она означает строку x, повторённую m раз подряд (m — целое число ≥ 2, x сама может быть сжатой записью). Например, 3[ab] — это ababab, а 2[2[ab]c] — это ababcababc. Сжатые и обычные куски можно ставить подряд: a3[b] — это abbb.
Дана строка text. Верните её кратчайшую запись. Чтобы ответ был однозначным, запись строится рекурсивно по таким правилам (функция enc(t) для строки t):
1. Если len(t) < 5, то enc(t) = t.
2. Иначе кандидат по умолчанию — сама t. Если t целиком состоит из m ≥ 2 копий более короткого блока, берём самый короткий такой блок p, и кандидатом становится m[enc(p)].
3. Затем перебираются разрезы t = left + right слева направо; запись enc(left) + enc(right) заменяет кандидата, только если она **строго короче** текущего кандидата.
Верните enc(text).text="cccccc" → '6[c]'
Шесть букв c подряд: 6[c] — 4 символа вместо 6.
text="xyzxyzxyzq" → '3[xyz]q'
Целиком строка не повторение. Лучший разрез — после девятой буквы: 3[xyz] и q, всего 7 символов.
text="abab" → 'abab'
Строки короче 5 символов остаются как есть.
text состоит из строчных латинских буквtext="cccccc"
'6[c]'
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 93 теста на сервере, включая скрытые.