Compress / DeCompress str /

by asdf

JavaScript

// IN: AAAABBCDDDEEAA
// OUT: 4A2BC3D2E2A

function compress (str) {
    var arr = str.split('');
    var count = 1;
    var newArr = [];
    
    function arrPush (counter, el) {
        if (counter !== 1) {
            newArr.push(counter);
            count = 1;
        }
        newArr.push(arr[el]);
    } 
    
    if (arr.length == 1) {
        newArr = arr;
    }
    for (var i = 1; i < arr.length; i++){
        if (arr[i] == arr[i-1]) {
            count += 1;
        } else {
            arrPush(count, i-1);
        }
        if (i == arr.length-1){
            arrPush(count, i);
        }
    }
    return newArr.join('');
}

function decompress (str) {
    var arr = str.split('');
    var count = '';
    var newArr = [];
    for (var i = 0; i < arr.length; i++){
        if (!isNaN(arr[i])) {
            count += arr[i];
        } else if (count == '') {
            newArr.push(arr[i]);
        } else {
            count = parseInt(count, 10);
            for (var j = 0; j < count; j++){
                newArr.push(arr[i]);
            }
            count = '';
        }
    }
    return newArr.join('');
}

console.log(compress(''));
console.log(decompress(''));
console.log(compress('A'));
console.log(decompress('A'));
console.log(compress("AAAABBCDDDEEAA"));
console.log(decompress("4A2BC3D2E2A"));