Для AAAAAABBBCDDDEEF корректное RLE-представление — A6B3C1D3E2F1. В ожидаемом ответе условия ошибочно указаны количества A и D.
Условие
Для AAAAAABBBCDDDEEF корректное RLE-представление — A6B3C1D3E2F1. В ожидаемом ответе условия ошибочно указаны количества A и D.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Условие
Сложность: EASY
Дан массив символов - буквы английского алфавита. Символы часто повторяются - один символ подряд несколько раз.
Нужно реализовать RLE сжатие - писать символ в output только один раз, а следом за ним - число повторений.
Пример: Input: AAAAAABBBCDDDEEF Output: A5B3C1D4E2F1
Ответ
Для AAAAAABBBCDDDEEF корректное RLE-представление — A6B3C1D3E2F1. В ожидаемом ответе условия ошибочно указаны количества A и D.
Считаем длину каждой последовательной группы:
def rle(text):
if not text:
return ""
result = []
current, count = text[0], 1
for char in text[1:]:
if char == current:
count += 1
else:
result.append(current + str(count))
current, count = char, 1
result.append(current + str(count))
return "".join(result)
Последнюю группу добавляют после цикла. Время O(n), память под результат O(n). Одиночные символы тоже получают суффикс 1; группы одного символа в разных местах не объединяются.