下面是实现示例:
function compressString(str) {
let compressed = "";
let count = 1;
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
// 如果当前字符与下一个字符相同,增加计数器
count++;
} else {
// 否则,将当前字符及其计数器追加到结果中
compressed += str[i] + count;
count = 1; // 重置计数器
}
}
// 返回较短的字符串(原始字符串或压缩后的字符串)
return compressed.length < str.length ? compressed : str;
}
// 示例用法
console.log(compressString("aabcccccaaa")); // 输出 "a2b1c5a3"
console.log(compressString("abcdefg")); // 输出 "abcdefg" (未发生压缩)