Проверяет знание базовых алгоритмов, работы со строками и оценки сложности.
Простейший алгоритм сжатия строки — это run-length encoding, при котором одинаковые символы заменяются символом и количеством повторений. Например, aaabb превращается в a3b2. Такой алгоритм выполняется за O(n), так как строка проходит один раз.
Один из самых простых способов сжатия строки — алгоритм RLE (Run-Length Encoding).
Определение:
RLE — это метод сжатия, при котором последовательности одинаковых символов заменяются символом и количеством повторений.
aaabcccc → a3b1c4
function compress(str) {
let result = "";
let count = 1;
for (let i = 1; i <= str.length; i++) {
if (str[i] === str[i - 1]) {
count++;
} else {
result += str[i - 1] + count;
count = 1;
}
}
return result;
}
Временная сложность: O(n)
Пространственная сложность: O(n)
Причина:
строка проходит один раз
результат хранится отдельно
простые форматы сжатия
кодирование данных
обработка логов
RLE — простой алгоритм сжатия, который удобен для задач с повторяющимися символами и хорошо демонстрирует оценку сложности.