名字的漂亮度
描述
给出一个名字,该名字有26个字符组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
本题含有多组数据。
数据范围:输入的名字长度满足 1<=n<=10000
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
示例1
输入:
2
zhangsan
lisi
输出:
192
101
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool Compare(int a,int b){
if(a>b) return true;
return false;
}
int main(){
int N;
while(cin>>N){
string str;
for(int i=0;i<N;++i){
cin>>str;
vector<int> charc(26,0);
for(size_t j=0;j<str.size();++j){
++charc[str[j]-'a'];
}
sort(charc.begin(),charc.end(),Compare);
int beauty=0;
int sbeauty=26;
for(int j=0;j<26;++j){
if(charc[j]!=0){
beauty+=charc[j]*sbeauty;
sbeauty--;
}
}
cout<<beauty<<endl;
}
}
return 0;
}