上述问题是在采访中提出的,代码必须接受aabbbcccc +++之类的输入,并应根据出现的字符串数输出a @ 2b @ 3c @ 4 + @ 3。
答案 0 :(得分:2)
您可以使用正则表达式并在替换功能中捕获。
(.)\1+
-这里的.
表示匹配任何内容\1+
,这意味着一次或多次匹配同一字符(.)
。比在回调函数中,我们返回串联first
和length of match
和@
let str = `aabbbcccc+++`
let op = str.replace(/(.)\1+/g, function(match,first){
return first+'@'+match.length;
})
console.log(op)
答案 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++++");