题解 | #名字的漂亮度#
名字的漂亮度
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 .....把每个字母的次数乘上对应漂亮度求和即为最终的名字漂亮度