Ctrl K

Упаковка серий на месте

Средняя
Дан массив символов symbols. Упакуйте его так: идите по массиву и каждую серию одинаковых символов подряд замените самим символом, а если серия длиннее одного символа — ещё и её длиной. Длина записывается по цифрам, каждая цифра — отдельный элемент: серия из 12 символов b превращается в "b", "1", "2". Упакованный результат нужно записать в начало того же массива symbols и вернуть его длину. Что останется в массиве после этой длины, неважно. Попробуйте обойтись O(1) дополнительной памяти.
Пример 1
symbols=["x", "x", "x", "y", "z", "z"] → 5

Серии xxx, y и zz упаковываются в x3yz2 — 5 символов.

Пример 2
symbols=["q"] → 1

Одиночный символ остаётся как есть.

Пример 3
symbols=["k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "m"] → 4

Одиннадцать k подряд дают k11 — длина записывается двумя отдельными символами "1" и "1". Вместе с m получается k11m, 4 символа.

Ограничения
  • 1 ≤ len(symbols) ≤ 2000
  • symbols[i] — латинская буква (строчная или заглавная), цифра или печатный знак
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный зеркальный кусок СредняяСлова в обратном порядке СредняяРовно одна правка СредняяКакая версия новее СредняяОбратный порядок слов на месте Средняя
загружаем Python…
Вход
symbols=["x", "x", "x", "y", "z", "z"]
Ожидается
5

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