题解 | #名字的漂亮度#

名字的漂亮度

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

//用vector(26)存储每个字母出现的次数,然后对vector进行排序,根据vector中的数目大小,依次乘上26,25,24,23...,权值之和就是结果

#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int N;
    cin >> N;
    string str;
    while(cin >> str){
        vector<int> mp(26, 0);
        for(int i = 0; i < str.size(); i ++ ){
            if(islower(str[i])){
                mp[str[i] - 'a'] ++;
            }else{
                mp[str[i] - 'A'] ++;
            }
        }
        sort(mp.begin(),mp.end());
        int n = 26;
        int ans = 0;
        for(int i = 25; i >= 0 ; i --){
            if(mp[i] == 0) break;
            ans += n * mp[i];
            n --;
        }
        cout<< ans << endl;
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务