压缩 JavaScript 字符串


我们要求撰写一个 JavaScript 函数,它可以输入一个可能包含一些连续重复字符的字符串。

该函数应以这种方式压缩字符串−

'wwwaabbbb' -> 'w3a2b4'
'kkkkj' -> 'k4j'

如果压缩字符串的长度大于或等于原始字符串,则我们应该返回原始字符串。

例如−

'aab' 可以压缩为 'a2b1',但会将其长度增加到 4,因此我们的函数应返回 'aab'

示例

代码如下——

 在线演示

const str1 = 'wwwaabbbb';
const str2 = 'kkkkj';
const str3 = 'aab';
const compressString = (str = '') => {
   let res = '';
   let count = 1;
   for(let i = 0; i < str.length; i++){
      let cur = str[i];
      let next = str[i + 1];
      if(cur === next){
         count++;
      }else{
         res += cur + String(count);
         count = 1;
      };
   }
   return res.length < str.length ? res : str;
};
console.log(compressString(str1));
console.log(compressString(str2));
console.log(compressString(str3));

输出

控制台中的输出如下−

3a2b4
k4j1
aab

更新于: 2021 年 2 月 27 日

6K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告