题目:字符串压缩,比如abbbc压缩为ab3c。
分析:如果字符是数字需要处理,比如aa2222b压缩为a224b,解压的时候就不知道是224个a,还是2个a,4个2或者其他。
解决办法,如果是数字,在前面加一个特殊字符标识,同时这个特殊字符也要单独处理
(前面加特殊字符是最精简的方法,只需要一个特殊字符,另外对于比较散乱的字符串,也就是单个字符很多的情况,会有很多1,所以如果字符数量是1则不压缩。)
'use strict';
const small = function (arr) {
let strList;
if (Array.isArray(arr)) strList = arr;
else if (typeof arr === 'string') strList = arr.split('');
else throw new Error('....');
let arrStr = '';
let count = 1;
for (let i = 0; i < strList.length; i++) {
if (strList[i + 1] === strList[i]) {
count++;
} else {
if (/\d/.test(strList[i]) || /'/.test(strList[i])) arrStr += `'${strList[i]}`;
else arrStr += `${strList[i]}`;
if (count !== 1) arrStr += `${count}`;
count = 1;
}
}
return arrStr;
};
const str = 'abgjldfff11111111111f4ous\'\'\'';
console.log(small(str));