@YakovSpb

Как сосчитать повторяющиеся буквы?

Что-то не работает код

function RST(str){
let arr = str.split('');
let num = 1;
let result = '';
for(let i = 1; i < arr.length; i++){
	if(arr[i] == arr[i-1]){
		num++;
	} else {
		result += arr[i] + num;
		num = 1;
	}
}
return result;
}


console.log(RST('AABBDDDFFEGERTAAA'))  //Должно получится  A2B2D3F2E1G1E1R1T1A3
  • Вопрос задан
  • 551 просмотр
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const count = str => [...str]
  .reduce((acc, n, i, a) => (
    a[i - 1] !== n && acc.push([ n, 0 ]),
    acc[acc.length - 1][1]++,
    acc
  ), [])
  .flat()
  .join('');

или

const count = str => str.replace(/(.)\1*/g, m => m[0] + m.length);
Ответ написан
@alexalexes
Вариант с минимальными изменениями
function RST(str){
let arr = str.split('');
let num = 1;
let result = '';
for(let i = 1; i < arr.length; i++){
  if(arr[i] == arr[i-1]){
    num++;
  } else {
    result += arr[i-1] + num; // тут была ошибка
    num = 1;
  }
}
// Нужно допечатать последнее накопление num
if(arr.length > 0)
 result += arr[arr.length-1] + num;
return result;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Argentinium
function RST(str){
  return str.split('').reduce((obj, val)=>{
    obj[val] = obj[val] ? obj[val]+1: 1;
    return obj;
  }, {})
}
Ответ написан
Комментировать
@hellohelpme
function getRLE(arg){
    return Array.from(new Set(arg.split(''))).map(u => [...`${arg.split(u).length - 1}${u}`].join("")).join("")
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы