题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
bool compare(const pair<char, int>& a, const pair<char, int>& b) {
return a.second > b.second;
}
int beauty(string s) {
int sum = 0;
map<char, int> mp;
for (char i : s) {
mp[i] += 1;
}
vector<pair<char, int>> vec(mp.begin(), mp.end());
sort(vec.begin(), vec.end(), compare);
for (int i = 26; i > 0; i--) {
if (vec.size() != 0) {
sum += i * vec.begin() -> second;
vec.erase(vec.begin());
}
}
return sum;
}
int main() {
int n;
vector<string> str;
while (cin >> n) {
str.resize(n);
for (int i = 0; i < n; i++) {
cin >> str[i];
}
for (auto i : str) {
int res = beauty(i);
cout << res << endl;
}
}
return 0;
}
// 64 位输出请用 printf("%lld")

查看3道真题和解析