题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <algorithm> //find()方法
using namespace std;
int main() {
vector<char> min_keys;//存放出现次数最少的字符
int min_val = 20; //最少出现次数先预设成字符串最大长度
string str;
cin >> str;
map<char, int> count;
//记录字符和字符出现次数到表中
for (char ch : str)
{
++count[ch];
}
//遍历表,找到值最小的键,并存入min_keys
for (const auto &p : count)
{
if (p.second < min_val)
{ //当前值比最小值还要小,更新最小值和对应的键
min_val = p.second;
min_keys.clear();
min_keys.push_back(p.first);
}
else if (p.second == min_val)
{ //当前值和最小值相等,将当前键加入到 min_keys 中
min_keys.push_back(p.first);
}
}
//遍历输出字符串,对每个字符查找在不在min_keys中,不在就输出
for (char ch : str)
{
auto it = find(min_keys.begin(), min_keys.end(), ch);
if (it == min_keys.end())
{
cout << ch;
}
}
return 0;
}
做复杂了,好在能跑通过。

