Пройдите строку по сериям одинаковых символов и допишите длину серии, если она больше одного. Ожидаемая строка в условии содержит несогласованные буквы и счётчики.
Функция уплотнения строки с повторяющимися символами
Пройдите строку по сериям одинаковых символов и допишите длину серии, если она больше одного. Ожидаемая строка в условии содержит несогласованные буквы и счётчики.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать функцию, которая сжимает строку, заменяя подряд идущие одинаковые символы на сам символ и количество его повторений, без добавления лишних знаков.
//Есть строка со множеством повторяющихся букв:
//ААААВВВССХУ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); формат без разделителей неоднозначен, если исходный алфавит содержит цифры.