美文网首页
字符串压缩算法js实现

字符串压缩算法js实现

作者: e042cbe4da21 | 来源:发表于2017-04-13 23:46 被阅读2406次

题目:字符串压缩,比如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));

相关文章

  • 一道关于字符串压缩的面试题

    题目 编写一个算法,实现基本的字符串“压缩”算法,比如对于字符串'abbbbffcccdddcc',经过算法处理之...

  • 字符串压缩算法js实现

    题目:字符串压缩,比如abbbc压缩为ab3c。分析:如果字符是数字需要处理,比如aa2222b压缩为a224b,...

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

  • day18-使用赫夫曼算法实现文件压缩

    使用赫夫曼算法实现压缩 步骤: 压缩一个字符串 "i like like like java do you lik...

  • 前端面试常见算法总结(中)

    3.实现一个简单的字符串压缩算法 例如:var str = "aaabbbccccfff" =>3a3b4c3...

  • 如何设计短url系统

    1、 不要幻想使用压缩算法,对于URL这种不超过100bytes的字符串,压缩算法的压缩比通常都大于1。2、 不要...

  • 字符串压缩算法

    题目描述:用Java实现一个字符串压缩算法 Input : "aaabbacc"Output:"3a2b1a2c"

  • js实现字符串算法

    字符串算法 替换空格 剑指offer:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为W...

  • 1394-字符串压缩

    字符串压缩 题目 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabc...

  • 赫夫曼编码

    赫夫曼编码 赫夫曼编码在数据压缩领域有着广泛的应用,压缩率在20%-90%,是一种重要的算法 算法思想(以字符串压...

网友评论

      本文标题:字符串压缩算法js实现

      本文链接:https://www.haomeiwen.com/subject/twiiattx.html