JSFiddle - React, Tailwind, and code Playground

by path411

JavaScript

function EncodeRunLength(input) {
    var input = input.split('');
    var length = 0;
    var last = input[0];
    var encoding = [];
    for(var i=0, iL =input.length; i<iL; i++) {
        var thischar = input[i];
        if(thischar == last) {
            length++;
        }
        else {
            encoding.push([length, last]);
            length = 1;
            last = thischar;
        }
    }
    encoding.push([length, last]);
    return encoding;
}

function DecodeRunLength(input) {
    var decoded = input.map(function(ele) { 
        return multiplyletter(ele[0],ele[1]); 
    });
    
    function multiplyletter(iterations, letter) {
        var output = '';
        for(var i=0; i<iterations; i++) {
            output += letter;
        }
        return output;
    }
    return decoded.join('');
}
console.log(EncodeRunLength('hi'));
console.log(EncodeRunLength('hhhiii'));
console.log(EncodeRunLength('Heeeeelllllooooo nurse!'));

console.log(DecodeRunLength([[1,'h'],[1,'i']]));
console.log(DecodeRunLength([[4,'h'],[4,'i']]));