题解 | 删除字符串中出现次数最少的字符

删除字符串中出现次数最少的字符

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));
    }
})();

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务