字符串压缩算法:

  1. 遍历字符串,记录每个字符出现的次数。
  2. 将字符和出现次数拼接成一个新的字符串。
  3. 如果新的字符串长度比原字符串长度短,则返回新的字符串,否则返回原字符串。

示例代码:

function compress(str) {
  let res = '';
  let count = 1;
  for (let i = 0; i < str.length; i++) {
    if (str[i] === str[i + 1]) {
      count++;
    } else {
      res += str[i] + count;
      count = 1;
    }
  }
  return res.length < str.length ? res : str;
}

字符串解压算法:

  1. 遍历字符串,按照字符和出现次数的顺序读取每个字符和它的出现次数。
  2. 将字符和出现次数拼接成一个新的字符串。

示例代码:

function decompress(str) {
  let res = '';
  let count = '';
  for (let i = 0; i < str.length; i++) {
    if (/\d/.test(str[i])) {
      count += str[i];
    } else {
      res += str[i].repeat(parseInt(count));
      count = '';
    }
  }
  return res;
}

注意:以上代码仅支持单个字符的压缩和解压,如果要支持多个字符的压缩和解压,需要修改代码

js实现含有汉字、字母、数字的字符串压缩与解压算法

原文地址: https://www.cveoy.top/t/topic/fImV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录