一、题目描述
删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除。
二、输入描述
一个字符串。
三、输出描述
删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除,如果都被删除 则换为empty。
四、解题思路
- 读取输入的字符串;
- 将字符串转换为字符数组;
- 使用 HashMap 统计每个字符出现的次数,字符作为键,出现次数作为值;
- 找出出现次数最少的字符,即最小次数 minTime,使用 Stream 的 min() 方法取得最小值;
- 遍历 HashMap,将出现次数等于 minTime 的字符替换为空字符串;
- 如果替换后的字符串长度为 0,则将其置为 “empty”;
- 输出最终结果。
五、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、思路
- 先找到出现最少的次数;
- 然后把出现最小次数的字符从字符串剔除;
- 暂无其他更高效的思路;
🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。