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

名字的漂亮度

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则第一个形参位于后面。

全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务