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"));