题解 | 删除字符串中出现次数最少的字符
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
/**
* 删除字符串中出现次数最少的字符
*/
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
function deleteLeastFrequentChars(str) {
if (!str) return "";
// 统计字符频率
const frequencyMap = new Map();
for (let char of str) {
frequencyMap.set(char, (frequencyMap.get(char) || 0) + 1);
}
// 找到最小频率
let minFrequency = Infinity;
for (let count of frequencyMap.values()) {
if (count < minFrequency) {
minFrequency = count;
}
}
// 获取最小频率的字符集合
const charsToRemove = new Set();
for (let [char, count] of frequencyMap) {
if (count === minFrequency) {
charsToRemove.add(char);
}
}
// 构建结果字符串(不使用正则,避免转义问题)
let result = "";
for (let char of str) {
if (!charsToRemove.has(char)) {
result += char;
}
}
return result;
}
console.log(deleteLeastFrequentChars(line));
}
})();

查看8道真题和解析