华为OD机试真题B卷 JavaScript 实现【删除字符串中出现次数最少的字符】,附详细解题思路

在这里插入图片描述

一、题目描述

删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除。

二、输入描述

一个字符串。

三、输出描述

删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除,如果都被删除 则换为empty。

四、解题思路

  1. 读取输入的字符串;
  2. 将字符串转换为字符数组;
  3. 使用 HashMap 统计每个字符出现的次数,字符作为键,出现次数作为值;
  4. 找出出现次数最少的字符,即最小次数 minTime,使用 Stream 的 min() 方法取得最小值;
  5. 遍历 HashMap,将出现次数等于 minTime 的字符替换为空字符串;
  6. 如果替换后的字符串长度为 0,则将其置为 “empty”;
  7. 输出最终结果。

五、Java算法源码

function deleteMinChar(str) {
    const map = new Map();

    // 统计每个字符出现的频率
    for (let i = 0; i < str.length; i++) {
        const char = str[i];
        if (map.has(char)) {
            map.set(char, map.get(char) + 1);
        } else {
            map.set(char, 1);
        }
    }

    // 找出最小频率
    const minFrequency = Math.min(...map.values());

    // 移除频率最小的字符
    const result = str
        .split("")
        .filter((char) => map.get(char) !== minFrequency)
        .join("");

    // 如果所有字符都被移除,则返回"empty";否则返回结果字符串
    return result.length === 0 ? "empty" : result;
}

六、效果展示

1、输入

dftww

2、输出

ww

3、思路

  1. 先找到出现最少的次数;
  2. 然后把出现最小次数的字符从字符串剔除;
  3. 暂无其他更高效的思路;

华为OD机试真题B卷 JavaScript 实现【删除字符串中出现次数最少的字符】,附详细解题思路_第1张图片


下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,javascript,java,开发语言)