题解 | #名字的漂亮度#
名字的漂亮度
http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//统计字符串中字母的出现次数,按次数递减赋予漂亮度即为最大值。
int beauty(string s){
int sum=0;
int n=s.length();
vector<int> num(26);
//统计出现次数
for(int i=0;i<26;i++){
for(int j=0;j<n;j++){
if(s[j]=='a'+i){
num[i]=num[i]+1;
}
}
}
//按次数排序,每个字母的总漂亮度等于次数*(次数下标+1),对所有字母求和就是字符串总漂亮度
sort(num.begin(),num.end());
for(int i=0;i<26;i++){
if(num[i]>0){
sum+=num[i]*(i+1);
}
}
return sum;
}
int main(){
int N;
while(cin>>N){
vector<string> res(N);
for(int i=0;i<N;i++){
cin>>res[i];
cout<<beauty(res[i])<<endl;
}
}
return 0;
}


