题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <iostream> #include <string> #include <cctype> #include <algorithm> #include <unordered_map> #include <climits> using namespace std; string delete_ch(const string& str) { string result = str; unordered_map<char, int> mymap; transform(result.begin(), result.end(), result.begin(), [](unsigned char c){ return tolower(c); }); //lambda表达式,C++新特性 for(auto ch: result) { if (isalpha(ch)) { ch = tolower(ch); mymap[ch]++; } } int mincount = INT_MAX; char min_cn = '\0'; for (auto count: mymap) { mincount = min(mincount, count.second); } for (const auto& it : mymap) { if(it.second == mincount) { // 使用erase-remove惯用法删除所有出现的指定字符 min_cn = it.first; result.erase(std::remove(result.begin(), result.end(), min_cn), result.end()); } } return result; } int main() { string input; cin >> input; cout << delete_ch(input) << endl; return 0; }