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

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

https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <algorithm>  //find()方法
using namespace std;
int main() {
    vector<char> min_keys;//存放出现次数最少的字符
    int min_val = 20;     //最少出现次数先预设成字符串最大长度
    string str;
    cin >> str;
    map<char, int> count;
    //记录字符和字符出现次数到表中
    for (char ch : str)
    {
        ++count[ch];
    }
    //遍历表,找到值最小的键,并存入min_keys
    for (const auto &p : count)
    {
        if (p.second < min_val)
        {   //当前值比最小值还要小,更新最小值和对应的键
            min_val = p.second;
            min_keys.clear();
            min_keys.push_back(p.first);
        }
        else if (p.second == min_val)
        {   //当前值和最小值相等,将当前键加入到 min_keys 中
            min_keys.push_back(p.first);
        }
    }
    //遍历输出字符串,对每个字符查找在不在min_keys中,不在就输出
    for (char ch : str)
    {
        auto it = find(min_keys.begin(), min_keys.end(), ch);
        if (it == min_keys.end())
        {
            cout << ch;
        }
    }
    return 0;
}

做复杂了,好在能跑通过。

全部评论

相关推荐

07-29 14:57
门头沟学院 Java
复盘中的钝角很想踢足...:别说ppt了,我简历去面试都不带的
点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-29 14:13
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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