DEV//UNIT

Кодирование длин серий (RLE)

Повторы сжимаются в «буква + счёт»: AAAABBB → A4B3.

время O(n)память O(n)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function rle(s: string): string {
2 let out = ''
3 let i = 0
4
5 while (i < s.length) {
6 let run = 1
7 while (i + run < s.length && s[i + run] === s[i]) run++
8 out += s[i] + String(run)
9 i += run
10 }
11
12 return out
13}
14
15function unrle(code: string): string {
16 let out = ''
17 for (let i = 0; i < code.length; i += 2) {
18 out += code[i]!.repeat(Number(code[i + 1]))
19 }
20 return out
21}

Проблема

Повторы сжимаются в «буква + счёт»: AAAABBB → A4B3.

Что вы видите

Серия подсвечивается, в выход пишется пара: символ и сколько раз он шёл подряд.

Как это работает

Простейшее сжатие: отлично на длинных повторах, раздувает пёстрые данные. Основа PCX/BMP-графики и факсов; в колоночных БД аналогичные схемы сжимают длинные последовательности одинаковых значений.

Пошаговый разбор

  1. 01

    Серия

    Подряд одинаковые символы.

  2. 02

    Пара

    Символ + длина серии.

  3. 03

    Обратимо

    Распаковка тривиальна.

Complexity и ограничения

time
O(n)
space
O(n)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Факсы

Group 3/4 факс-сжатие — RLE по строкам.

PNG-фильтры

Подготовка данных повторами улучшает сжатие.

ClickHouse

Run-length сжатие сортированных колонок.

Связанные алгоритмы

Shorts

«Сжатие из 1970-х, которое живёт в ваших файлах»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Сжатие из 1970-х, которое живёт в ваших файлах
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/rle