题解 | #删除字符串中出现次数最少的字符#按部就班实现
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <iostream> #include <unordered_map> #include <vector> #include <algorithm> using namespace std; void RemoveLeastFrequentChars(string input) { //定义一个map,来记录每种字符对应的个数 unordered_map<char, int> charCount; string result; //声明最小出现次数,设置其初始值为输入字符串的长度(这是可能的最大的值) int minCount = input.size(); //遍历输入字符串,将字符跟个数记录下来 for (char ch : input) { charCount[ch] = charCount[ch] + 1;//当赋值给ch值的时候,对应的int默认为0 } //遍历map,求出最小出现次数 for (auto pair : charCount) { if (pair.second < minCount) { minCount = pair.second; } } //声明一个vector vector<char> leastFrequentChars; //遍历map,根据minCount,将对应的char压入vector for (auto pair : charCount) { if (pair.second == minCount) { leastFrequentChars.push_back(pair.first); } } //遍历输入字符串 for (char ch : input) { //如果没有找到最小次数对应的char,就将其压入result字符串 if (find(leastFrequentChars.begin(), leastFrequentChars.end(), ch) == leastFrequentChars.end()) { result.push_back(ch); } } //遍历result字符串,即可得到答案 for (char ch : result) { cout << ch; } } int main() { string str; cin >> str; RemoveLeastFrequentChars(str); return 0; }