题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <iostream> #include<map> #include<string> #include<vector> using namespace std; int main() { string str; while (getline(cin, str)) { map<char, int> mapTemp; map<char, int>::iterator it; for(int i=0;i<str.length();i++){ char c=str[i]; it=mapTemp.find(c); if(it!=mapTemp.end()){ it->second++; //cout<<c<<" "<<"save "<<"mapTemp-size: "<<mapTemp.size()<<endl; }else{ mapTemp.insert(pair<char,int>(c,1)); //cout<<c<<" "<<"new "<<"mapTemp-size: "<<mapTemp.size()<<endl; } } int minNum=20; map<char, int>::iterator iter; for(iter=mapTemp.begin();iter!=mapTemp.end();iter++){ if(iter->second<minNum){ minNum=iter->second; } //cout<<iter->first<<" "<<iter->second<<" "<<minNum<<endl; } vector<char> vc; for(iter=mapTemp.begin();iter!=mapTemp.end();iter++){ if(iter->second==minNum){ vc.push_back(iter->first); //cout<<iter->first<<endl; } } for(int i=0;i<str.length();i++){ bool isok=false; if(vc.size()!=0){ for(int j=0;j<vc.size();j++){ //cout<<str[i]<<" "<<vc[j]<<endl; if(str[i]==vc[j]){ isok=true; break; } } } if(!isok){ cout<<str[i]; } } } }