题解 | #删除字符串中出现次数最少的字符#

删除字符串中出现次数最少的字符

https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

//
// 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;
}


全部评论

相关推荐

美丽的查理斯不讲武德:包kpi的啊,感觉虾皮一点hc都没有
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务