题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
//
// Created by on 2022/8/1.
//
//描述
// 实现删除字符串中出现次数最少的字符,若出现次数最少的字符有*多个*,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
//
//数据范围:输入的字符串长度满足 1 \le n \le 20 \1≤n≤20 ,保证输入的字符串中仅出现小写字母
// 输入描述:
//字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
//
//输出描述:
// Created by on 2022/8/1.
//
//描述
// 实现删除字符串中出现次数最少的字符,若出现次数最少的字符有*多个*,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
//
//数据范围:输入的字符串长度满足 1 \le n \le 20 \1≤n≤20 ,保证输入的字符串中仅出现小写字母
// 输入描述:
//字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
//
//输出描述:
//删除字符串中出现次数最少的字符后的字符串。
#include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; //定义比较的函数 无论是 min_ele 还是 max_ele 第一个小于第2个那么返回true bool cmp_value(const pair<int, int> left,const pair<int,int> right) { return left.second < right.second; } int main() { string s; cin>>s; map<char,int> mp; for( auto & c:s){ mp[c]++; } auto it = min_element(mp.begin(),mp.end(),cmp_value) ; // 对于 map 返回的迭代器 能不能向 vector 那样 相减 for (auto &ele:s){ if( mp[ele] != it->second){ cout<<ele; } } return 0; }