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

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

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

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;

int main() {
    string s;
    getline(cin,s);
    unordered_map<char, int>dic;
    for(int i=0;i<s.size();i++){
        if(dic.find(s[i])!=dic.end()){
            dic[s[i]]++;
        }
        else{
            dic[s[i]]=1;
        }
    }
    int ans=30;
    for(int i=0;i<s.size();i++){
        if(dic[s[i]]<ans)
            ans=dic[s[i]];
    }//找到了最少出现的次数
    vector<char>mark_dic;//红名字典
    for(const auto&pair:dic){
        if(pair.second==ans){
            mark_dic.push_back(pair.first);
        }
    }
    bool mark=false;
    for(int i=0;i<s.size();i++){
        for(int j=0;j<mark_dic.size();j++){
            if(s[i]==mark_dic[j]){
                mark=false;//在红名字典里就不让输出
                break;
            }
            else{
                mark=true;//不在的话就让输出
            }
        }
        if(mark){
            cout<<s[i];
        }
    }
    cout<<endl;
}
// 64 位输出请用 printf("%lld")

自己的笨比思路诶嘿

#算法面试分享#
全部评论

相关推荐

04-11 15:34
已编辑
华中科技大学 网络安全
疯犬丨哈士奇:意思就是:我们还有其他更优秀的人在等回复,如果他们不要这个机会就会来找你
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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