题目描述

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

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;
    }
}