活动地址: 牛客春招刷题训练营 - 编程打卡活动

#include<iostream>

#include<algorithm>

#include<map>

using namespace  std;

#define int long long

const int N =2e5+10;

struct st{

    char a;

    int m=0; // 用结构体来 存储 + 排序

}p[N];

bool cmp(st x,st y){

    if(x.m!=y.m){ /// 不可以用 x.a!= y.a 否则出现x.a==y.a 时会直接判a 但是事先按出现次数排的

        return x.m>y.m;

    }

    return x.a<y.a;

}

void solve(){

    string s;

     cin>>s;

     map<char,int>ma;

    for(int i=0;i<s.size();i++){

        ma[s[i]]++; // map 来存储 出现次数

    }

    int k=0;

    for(auto x: ma){

        p[k].a=x.first;

        p[k].m=x.second;

        k++;

    }

    sort(p,p+k,cmp);// 排序

    for(int i=0;i<k;i++){

        cout<<p[i].a; // 输出

    }

   

}

signed main(){

   

    int T=1;

//  cin>>T;

    while(T--){

        solve();

    }

    return 0;

}

活动地址: 牛客春招刷题训练营 - 编程打卡活动