题解 | #字符统计#

字符统计

https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(const pair<char, int> & a, const pair<char, int> & b) {
    if(a.second == b.second){
          return a.first < b.first;
      }
      return a.second > b.second;
}

struct cmp1{
  bool operator()(const pair<char, int> & a, const pair<char, int> & b){
      if(a.second == b.second){
          return a.first < b.first;
      }
      return a.second > b.second;
  }  
};

int main(){
    string s = "";
    while(getline(cin, s)){
        map<char, int> m;
        for(char ch : s){
            m[ch]++;
        }
        
        vector<pair<char, int>> v(m.begin(), m.end());  //
       
        //sort(v.begin(), v.end(), cmp;
        //stable_sort(v.begin(), v.end(), cmp1());
        
        //因为map已经依照键排序了,所以用稳定排序当次数一样时,会保持原来的先后关系,即ASCII码的升序
        stable_sort(v.begin(), v.end(), [](const pair<char,int>& a,const pair<char,int>& b){
            //用Lambda来写配合算法使用的小函数是非常方便的
            return a.second>b.second;
        });
        
        for(auto iter : v){
            cout << iter.first;
        }
        cout << endl;
    }
    
    return 0;
}

华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务