题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
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")
自己的笨比思路诶嘿
#算法面试分享#