在JavaScript中将字符aabbbcccc +++压缩为a @ 2b @ 3c @ 4 + @ 3

时间:2019-01-23 11:32:44

标签: javascript

上述问题是在采访中提出的,代码必须接受aabbbcccc +++之类的输入,并应根据出现的字符串数输出a @ 2b @ 3c @ 4 + @ 3。

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式并在替换功能中捕获。

(.)\1+-这里的.表示匹配任何内容\1+,这意味着一次或多次匹配同一字符(.)。比在回调函数中,我们返回串联firstlength of match@

let str = `aabbbcccc+++`

let op = str.replace(/(.)\1+/g, function(match,first){
  return first+'@'+match.length;
})

console.log(op)

答案 1 :(得分:1)

您可以尝试使用正则表达式方法,也可以使用下面的代码段

  1. 基本循环

function compress(str) {
  let newstr = "";
  let count = 1;
  let index = 0;
  for (let i = 0; i <= str.length; i++) {
    if (str.charAt(i) === str.charAt(i + 1)) {
      count += 1;
    } else {
      newstr += `${str.charAt(i)}@${count}`;
      count = 1;
    }
  }
  console.log(newstr);
}
compress("aaaabbbbbccccc++++");

  1. 使用上面的片段 https://stackoverflow.com/a/54326492/7444617
  2. 使用正则表达式方法