diff --git a/chapter01/1.6 - String Compression/strComp.js b/chapter01/1.6 - String Compression/strComp.js index 2d0e776..1d1ac2f 100644 --- a/chapter01/1.6 - String Compression/strComp.js +++ b/chapter01/1.6 - String Compression/strComp.js @@ -1,25 +1,17 @@ -var strComp = function(string) { - var compressed = ''; - var currChar = ''; - var currCount = ''; - var maxCount = 1; - for (var i = 0; i < string.length; i++) { - if (currChar !== string[i]) { - console.log(currChar, string[i], i); - compressed = compressed + currChar + currCount; - maxCount = Math.max(maxCount, currCount); - currChar = string[i]; - currCount = 1; - } else { - currCount++; - } - } - compressed = compressed + currChar + currCount; - maxCount = Math.max(maxCount, currCount); +function compress(str) { + var arr = [], j = 0; + for(var i = 0; i < str.length; i = j) { + var ch = str[i], count = 1; + while(str[++j] == ch) { + count++; + } + arr.push(ch + count); + } + var rtn = arr.join(''); + return rtn.length < str.length ? rtn : str; +} - return maxCount === 1 ? string : compressed; -}; // Test -console.log('aaaaaa', strComp('aaaaaa'), 'a6'); -console.log('aabcccccaaa', strComp('aabcccccaaa'), 'a2b1c5a3'); \ No newline at end of file +console.log('aaaaaa', compress('aaaaaa'), 'a6'); +console.log('aabcccccaaa', compress('aabcccccaaa'), 'a2b1c5a3');