📅  最后修改于: 2023-12-03 15:28:47.932000             🧑  作者: Mango
给定一个只包含小写字母的字符串,将其压缩,使得同一字母连续出现的个数在压缩后的字符串中只出现一次。
例如,字符串aabcccccaaa压缩后变为a2b1c5a3。
如果压缩后的字符串没有变短,则返回原先的字符串。
/**
* @param {string} str
* @return {string}
*/
function compress(str) {}
输入:"aabcccccaaa"
输出:"a2b1c5a3"
输入:"abcd"
输出:"abcd"
首先,通过遍历字符串计算出每个字符连续出现的次数,然后将它们存储在一个新的字符串中。最后判断新的字符串长度是否小于原字符串长度,如果小于,则返回新的字符串,否则返回原字符串。
function compress(str) {
let res = '';
let count = 1;
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
count++;
} else {
res += str[i] + count;
count = 1;
}
}
return res.length < str.length ? res : str;
}
console.log(compress('aabcccccaaa')); // a2b1c5a3
console.log(compress('abcd')); // abcd