Функция уплотнения строки с повторяющимися символами

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

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

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

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

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

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

Условие

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

 //Есть строка со множеством повторяющихся букв:

//ААААВВВССХУZDDDDEEFFFFAAAAAABBBBBBBBBBBBBBBBBBBBBBB

//Нужно ее сократить, что бы получилось так:

//A4B3C2XYZD4E3F3AGB28

Ответ

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

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

Например, AAAABBBC → A4B3C. В условии нельзя подменять кириллическую А латинской A: это разные символы. Группируются соседние Unicode-кодовые точки, не все появления буквы в строке. Время O(n), память O(n); формат без разделителей неоднозначен, если исходный алфавит содержит цифры.

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

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

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

Подробнее