题解 | #名字的漂亮度# 哈希+排序

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

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

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

int main() {
    int n;
    cin >> n;

    for(int i=0; i<n; i++){
        string s;
        cin >> s;
        int len = s.size();
        map<char,int> mp;

        for(int j=0; j<len; j++){
            if(mp.find(s[j]) == mp.end()){
                mp[s[j]] = 1;
            }else {
                mp[s[j]]++;
            }
        }

        vector<pair<char,int>> tmp(mp.begin(), mp.end());
        sort(tmp.begin(), tmp.end(), cmp);

        int res = 0, len1 = tmp.size();
        for(int k=0; k<len1; k++){
            res += tmp[k].second * (26-k);
        }

        cout << res << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

分析题目要求得需要用哈希表存储输入字符串中的字母和出现的个数,同时出现个数最多的字母的漂亮度最高,因此引入排序问题。

需要清楚的是自定义cmp函数的时候:1、函数形参一定要采用引用的形式,要不无法操作对象。2、对于两个对象判断的情况,如果返回为true,则第一个形参位于前面,返回false则第一个形参位于后面。

全部评论

相关推荐

剑桥断刀:找啥工作,牛客找个比如大厂软开或者随便啥的高薪牛马,大把没碰过妹子的技术仔,狠狠拿捏爆金币
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务