Реализуйте функцию RLE (run-length encoding) для сжатия строки с повторяющимися символами: заменяйте последовательности одинаковых символов символом и количеством повторений; если символ встречается один раз, количество не выводите.

Считайте длину текущей серии и записывайте символ с числом только при длине больше одного.

Короткий ответ

Что ответить на собеседовании

Считайте длину текущей серии и записывайте символ с числом только при длине больше одного.

Подробный разбор

Ответ с пояснениями

Считайте длину текущей серии и записывайте символ с числом только при длине больше одного.

Обход ниже работает по Unicode code points, не по составным графемам. Формат неоднозначен для исходных цифр, поэтому для обратимого кодирования произвольных строк потребуется экранирование или разделители.

function rle(text) {
  const out = [];
  let previous, count = 0;
  const flush = () => {
    if (count) out.push(previous + (count > 1 ? count : ''));
  };
  for (const char of text) {
    if (count && char === previous) count++;
    else { flush(); previous = char; count = 1; }
  }
  flush();
  return out.join('');
}
// rle('AAABCC') === 'A3BC2'

Пустая строка даёт пустую строку; время O(n), память зависит от результата.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее