题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
include <bits/stdc++.h>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
int n;
while (cin>>n) {
vector<string> vec(n);
vector<unordered_map<char,int>> mp(n);
for(int i=0;i<n;i++){
cin>>vec[i];
for(int j=0;j<vec[i].size();j++){
mp[i][vec[i][j]]++;
}
vector<pair<char,int>> vp(mp[i].begin(),mp[i].end());
sort(vp.begin(),vp.end(),[](const pair<char, int>& a, const pair<char, int>& b){
return a.second > b.second;
});
int piao=26;
int cnt=0;
for(int k=0;k<vp.size();k++){
vp[k].second=piao*vp[k].second;
cnt+=vp[k].second;
piao--;
}
cout<<cnt<<endl;
}
}
}
利用map记录每个字母出现的次数,根据次数从大到小排序,根据顺序依次赋值26 25 24 .....把每个字母的次数乘上对应漂亮度求和即为最终的名字漂亮度