Показать сообщение отдельно
  #2 (permalink)  
Старый 17.09.2019, 09:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Циклом обойти строку сравнивая символ с последующим, если равны увеличивать счетчик одинаковых, если нет, запоминать символ в результате со счетчиком.

var s = 'AAAABBBCCXYZDDDDEEEFFFAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBbbb';
// A4B3C2XYZD4E3F3A6B28b3

function rle(s) {
    for(var i=0, a = 0, b = ''; i <= s.length; ++i) {
        if(s.charAt(i) == s.charAt(i+1)) a++;
        else {
            b += s.charAt(i) + (a ? a + 1 : '');
            a = 0;
        } 
    }
    return b;
}

alert(rle(s))
Ответить с цитированием