题解 | #名字的漂亮度#
名字的漂亮度
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;
}

查看16道真题和解析