华为机试-删除字符串中出现次数最少的字符(较难)

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

http://www.nowcoder.com/questionTerminal/05182d328eb848dda7fdd5e029a56da9

题目描述

实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
注意每个输入文件有多组输入,即多个字符串用回车隔开

map存放次数,打擂台找最小次数值,遍历输出非最小次数的字母

#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main(){
    string s;
    while(cin>>s){
        map<char,int> mymap;//(易错)放到循环里,不然是所有循环的统计量
        for(char i:s)
            mymap[i]++;//用map存储每个字母出现的次数
        int min=20;
        for(auto i:mymap)
            if(i.second<min)
                min=i.second;//遍历map找到最小次数
        string ans;
        for(auto i:s)//非最小次数对应的字母连接输出
            if(mymap[i]!=min)//(易错)map的count是用来统计是否出现过的
                ans+=i;
        cout<<ans<<endl;
    }
}
全部评论
写得不过呀
点赞 回复 分享
发布于 2021-04-10 10:46

相关推荐

不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
难怪不开摄像头,全是简单的性格题,比大疆友善多了
NULL10086:今早上发的测评,我这还没做呢,官网上已经显示挂了
投递大疆等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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