@Just__Nick

Как решить задачу с методом сжатия строк?

Прохожу обучение языка JavaScript на платформе Stepik и там есть одна задача, которая вызвала у меня затруднения.
Вкратце, нужно реализовать метод сжатия строк, основанный на повторяющихся символах.
Формат выходных данных:

Выведите сжатую строку.

Sample Input:
aabccc
Sample Output:
a2bc3

Функцию ввода и вывода я уже смог реализовать. Вот она:
var readline = require('readline');
var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});

rl.on('line', function(line){
    var s = line.split(' ');
   //* не понимаю, как это можно сделать. Помогите, пожалуйста
    console.log();
    rl.close();
});
  • Вопрос задан
  • 901 просмотр
Решения вопроса 2
twobomb
@twobomb
Смысл обучения если это делает за тебя кто-то другой? Так ты ничему не научишься, учись решать трудности сам.
function compression(str){
	var out = "";
  var cnt = 1;
	for(var i = 0; i < str.length; i++)
  	if(str[i] == str[i+1] && i < str.length)
    	cnt++;
    else{
    	out+= str[i]+ (cnt > 1?cnt:"");
      cnt = 1;
      }
  return out;
}
function uncompression(str){
	var out = "";
	for(var i = 0; i < str.length; i++){
  	if(!isNaN(parseInt(str[i])))
    	continue;
  	if(i < str.length && !isNaN(parseInt(str[i+1])))
    	for(var j = 0; j < str[i+1];j++)
      	out+= str[i];
    else
    	out+=str[i];
    }
  return out;
}
alert(compression("aabcccabb"));//a2bc3ab2
alert(uncompression("a2bc3ab2"));//aabcccabb
Ответ написан
Stalker_RED
@Stalker_RED
Написал сжатие чуть покороче
var compression = s=>s.replace(/(.)\1{1,}/g, s=>s[0]+s.length)
https://jsfiddle.net/5r6x9r92/

и разжатие
var uncompress = s=> s.replace(/.\d+/g, s=>s[0].repeat(s.slice(1)))
https://jsfiddle.net/b527yfpp/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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