题解 | #名字的漂亮度#
名字的漂亮度
http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
//用vector(26)存储每个字母出现的次数,然后对vector进行排序,根据vector中的数目大小,依次乘上26,25,24,23...,权值之和就是结果
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int N;
cin >> N;
string str;
while(cin >> str){
vector<int> mp(26, 0);
for(int i = 0; i < str.size(); i ++ ){
if(islower(str[i])){
mp[str[i] - 'a'] ++;
}else{
mp[str[i] - 'A'] ++;
}
}
sort(mp.begin(),mp.end());
int n = 26;
int ans = 0;
for(int i = 25; i >= 0 ; i --){
if(mp[i] == 0) break;
ans += n * mp[i];
n --;
}
cout<< ans << endl;
}
return 0;
}