在这里,我创建了一个用于字符串压缩的程序,因此对于输入 chars = ["a","a","b","b","c","c","c"] 我们得到像 6 这样的输出字符 [“a”、“2”、“b”、“2”、“c”、“3”]。所以我使用数组方法创建了一个程序,该程序也非常冗长且复杂。有没有使用两指针或递归方法以很少的代码和效率来解决该程序的解决方案?您能提供非常短的代码吗?代码如下。
var compress = function(chars) {
if (!chars.length) {
return 0;
}
let j = 0;
let cur = chars[0];
let counter = 0;
for (let i = 0; i <= chars.length; i++) {
if (chars[i] === cur) {
counter++;
} else {
// Otherwise, add the current character and count to the compressed array
chars[j] = cur;
if (counter > 1) {
const s = counter.toString();
for (let k = 0; k < s.length; k++) {
chars[++j] = s[k];
}
}
j++;
cur = chars[i];
counter = 1;
}
}
return j
};
console.log(compress ('aaaabbc'))//a4b2c