- 给字符串排序
- 将每个字符的个数保存到数组中
- 数组排序
- 从数组后面逐个与26,25,24,...进行相乘求和
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main () {
int n;
cin >> n;
string s;
while (cin >> s) {
int ans = 0;
// 给字符串排序
sort(s.begin(), s.end());
vector<int> arr;
char temp = s[0];
// 将每个字符的个数保存到数组中
for (int i = 0, j = 0; i < s.size(); ++i) {
if (i == s.size() - 1) {
if (s[i] == temp) {
arr.push_back(i - j + 1);
break;
} else {
arr.push_back(i - j);
arr.push_back(1);
break;
}
}
if (i != s.size() - 1 && s[i] != temp) {
arr.push_back(i - j);
j = i;
temp = s[i];
}
}
// 数组排序
sort(arr.begin(), arr.end());
// 从数组后面逐个与26,25,24,...进行相乘求和
for (int j = arr.size() - 1, i = 26; j >= 0; --j, --i) {
ans += arr[j] * i;
}
cout << ans << endl;
}
return 0;
}