- 给字符串排序
- 将每个字符的个数保存到数组中
- 数组排序
- 从数组后面逐个与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; }