题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include<iostream> #include<string> #include<cmath> #include<vector> using namespace std; int main() { int N = 0; cin >> N; vector<int>n(N); for (int m = 0; m < N; m++) { string s; cin >> s; int c[26]; //整型数组用于存放26个字母的数量 for (int i = 0; i < 26; i++) //将26个字母数量初始化为0 { c[i] = 0; } for (int i = 0; i < s.size(); i++) //遍历查询26个字母的数量 { c[s[i] - 'a']++; } for (int i = 0; i < 25; i++) { //从大到小冒泡排序存放字母数量的数组 for (int j = 0; j < 25 - i; j++) { if (c[j] <= c[j + 1]) { int tmp = c[j]; c[j] = c[j + 1]; c[j + 1] = tmp; } } } int num = 0; for (int i = 0; i < 26; i++) //数量最多的字母其漂亮度应该设为最高,即26,之后的递减 { if (c[i] != 0) { num = num + c[i] * (26 - i); //计算漂亮度 } } n[m] = num; } for (int i = 0; i < N; i++) { cout << n[i] << endl; } return 0; }