Ctrl K

Сжатие повторов с потолком девять

Средняя
Строку text нужно ужать для передачи по медленному каналу. Кодировщик читает её слева направо и режет на блоки: каждый блок — это идущие подряд одинаковые буквы, но не больше девяти штук. Блок берётся максимально длинным: он заканчивается, когда буква меняется или когда в нём уже девять букв. Каждый блок записывается двумя символами: сначала его длина (одна цифра от 1 до 9), затем сама буква. Записи блоков склеиваются по порядку. Верните получившуюся закодированную строку. Например, десять букв a подряд превращаются в 9a1a.
Пример 1
text='zzzyx' → '3z1y1x'

Три подряд «z» дают блок «3z», затем одиночные «y» и «x» — «1y» и «1x».

Пример 2
text='kkkkkkkkkkkkm' → '9k3k1m'

Двенадцать «k» не помещаются в один блок: сначала «9k», потом оставшиеся три — «3k», и в конце «1m».

Пример 3
text='q' → '1q'

Одна буква — один блок «1q».

Ограничения
  • 1 ≤ len(text) ≤ 2·10⁵
  • text состоит только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный фрагмент без повторов СредняяСамый длинный зеркальный кусок СредняяЗмейка по строкам СредняяСнисходительное чтение числа СредняяЧисло римскими цифрами Средняя
загружаем Python…
Вход
text='zzzyx'
Ожидается
'3z1y1x'

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