题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
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; }
做复杂了,好在能跑通过。