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