首页 > 解决方案 > 我正在尝试制作 RLE 代码但没有成功

问题描述

我正在尝试实现“运行长度编码”的功能,但我被困在了中间。

例如,我有字符串:"RRRTTTFBB"并且我试图将其分隔为这种数组:["RRR", "TTT", "F", "BB"]

我只设法将项目放入数组的 1 个键中,如下所示:["RR" "R" "TT" "T" ....]

我试过用while循环、for循环、if/else、switch来做,但我不知道我做错了什么。

function rleFunc(str) {
  let newArr = [];
  const strTrim = str.trim();
  const strUp = strTrim.toUpperCase();
  const arr = strUp.split("");
  const arrLength = arr.length;
  // Anyone has idea what to put here?? I'm lost
  return newArr;
}

标签: javascript

解决方案


另一种方法是使用正则表达式.match来获得您想要的结果:

const str = "RRRTTTFBB";
console.log(str.match(/(.)\1*/g));

由于以下表达式,这是有效的:

  • (.): 表示组合任何字符
  • \1*:表示使用先前分组的字符并匹配它的零次出现
  • /g: 意味着对整个字符串重复这个模式(不仅仅是第一次出现)

推荐阅读