Напишите функцию, которая сжимает строку из букв: последовательность повторяющихся символов заменяется символом и числом повторений, при этом для одиночных символов число не добавляется.

Пройдите строку по сериям одинаковых символов и добавляйте длину серии только тогда, когда она больше одного.

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

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

Пройдите строку по сериям одинаковых символов и добавляйте длину серии только тогда, когда она больше одного.

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

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

Пройдите строку по сериям одинаковых символов и добавляйте длину серии только тогда, когда она больше одного.

Вариант для строк из букв, учитывающий Unicode code points:

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

Например, aaabbc превращается в a3b2c, пустая строка остаётся пустой. Время O(n); для произвольных цифр во входе понадобился бы отдельный однозначный формат кодирования.

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

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

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

Подробнее