华为OJ 名字的漂亮度

华为OJ 名字的漂亮度

描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
知识点 字符串
运行时间限制 0M
内存限制 0
输入
整数N,后续N个名字
N个字符串,每个表示一个名字

输出
每个名称可能的最大漂亮程度
样例输入 2 zhangsan lisi
样例输出 192 101

代码:

// 名字漂亮度.cpp : 

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

int let[26];

void solve()
{
    //
    string str = "";
    cin >> str;
    fill(let, let + 26, 0);
    for (size_t i = 0; i < str.size(); i++) {
        char ch = str[i];
        if (ch >= 'A'&&ch <= 'Z') {
            ch += 32;
        }
        let[ch - 'a']++;
    }
    sort(let, let + 26, greater<int>());
    int i = 0;
    int sum = 0;
    int k = 26;
    while (let[i] != 0) {
        sum += (let[i] * k);
        k--;
        i++;
    }
    cout << sum << endl;
    return;
}
int main()
{
    int t;
    cin >> t;
    for (int i = 1; i <= t;i++){
        solve();
    }
    //system("pause");
    return 0;
}

分析:统计名字字母出现的次数,依次取漂亮度为26、25、24……

你可能感兴趣的:(华为,OJ)