题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <algorithm> // 包含 std::sort 和 std::greater
using namespace std;
int main() {
int N;
cin >> N;
vector<string> str; //存放输入的string
for (int i = 0; i < N; i++) {
string s;
cin >> s;
str.push_back(s);
}
for (auto it = str.begin(); it != str.end(); it++) {
// cout << "it = " << *it << " ";
map<char, int> fre; //记录string中每个字母出现次数
for (auto it1 = (*it).begin(); it1 != (*it).end(); it1++) {
fre[*it1] = 0;
}
for (auto it1 = (*it).begin(); it1 != (*it).end(); it1++) {
if (fre.count(*it1)) {
fre[*it1]++;
}
}
vector<int> se;//用于存放每个字母出现的次数;
for (auto it = fre.begin(); it != fre.end(); it++) {
se.push_back((*it).second);
}
// 使用 std::sort 按倒序对 vector 进行排序
sort(se.begin(), se.end(), std::greater<int>());
int max = 0; //最大的"漂亮度"
int ori_beauty = 26; //单个英文字母最大"漂亮度"
for (auto it = se.begin(); it != se.end(); it++) {
max += (*it) * ori_beauty;
--ori_beauty;
}
cout << max << endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
查看11道真题和解析
