题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
//20min我就写了个这?
//辣眼睛了 对不起对不起
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
int N;
cin >> N;
for(int i = 0;i<N;++i){
string inputstr;
cin>>inputstr;
vector<int> vecsize(26,0);
int maxsize = 0;
//相同字母就累加,记下最大的字母
for(int j = 0;j<inputstr.size();++j){
++vecsize[int(inputstr[j]-'a')];
maxsize = max(maxsize,vecsize[int(inputstr[j]-'a')]);
}
//从最大漂亮度开始遍历
int res = 0,record = 26;
for(int k = maxsize;k>=1;--k){
for(int j = 0;j<vecsize.size();++j){
if(k == vecsize[j]){
res += record*k;
--record;
}
}
}
cout << res << endl;
}
}
#include <string>
#include <vector>
using namespace std;
int main(){
int N;
cin >> N;
for(int i = 0;i<N;++i){
string inputstr;
cin>>inputstr;
vector<int> vecsize(26,0);
int maxsize = 0;
//相同字母就累加,记下最大的字母
for(int j = 0;j<inputstr.size();++j){
++vecsize[int(inputstr[j]-'a')];
maxsize = max(maxsize,vecsize[int(inputstr[j]-'a')]);
}
//从最大漂亮度开始遍历
int res = 0,record = 26;
for(int k = maxsize;k>=1;--k){
for(int j = 0;j<vecsize.size();++j){
if(k == vecsize[j]){
res += record*k;
--record;
}
}
}
cout << res << endl;
}
}