去除字符串中出现次数最少的字符
删除字符串中出现频率最低的字符,保持原有顺序
问题
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些字符后的字符串,保持其它字符的原有顺序。
示例:
"ababac"→"ababa""aaabbbcceeff"→"aaabbb"
解答
function removeLeastFrequentChar(str) {
// 统计每个字符出现的次数
const charMap = {};
for (let i = 0; i < str.length; i++) {
const char = str[i];
charMap[char] = (charMap[char] || 0) + 1;
}
// 找出最少出现次数
const minCount = Math.min(...Object.values(charMap));
// 过滤掉出现次数最少的字符
let result = '';
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (charMap[char] !== minCount) {
result += char;
}
}
return result;
}
// 测试
console.log(removeLeastFrequentChar("ababac")); // "ababa"
console.log(removeLeastFrequentChar("aaabbbcceeff")); // "aaabbb"
关键点
- 使用对象统计每个字符的出现次数
- 通过
Math.min()找出最小出现次数 - 遍历原字符串并过滤,保持原有顺序
- 时间复杂度 O(n),空间复杂度 O(n)
目录