给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
int main()
{
int n;
cin >> n;
string *name = new string[n];
for (int i = 0; i < n; i++)
cin >> name[i];
int count[26] = { 0 };
int sum = 0;
for (int i = 0; i < n; i++)
{
int len = name[i].length();
for (int j = 0; j < len; j++)
name[i][j] = tolower(name[i][j]);//转换为小写
for (int j = 0; j < len; j++)
count[97 + 26 - 1 - int(name[i][j])]++;
for (int k = 0; k < 26; k++)//冒泡排序
{
for (int m = 0; m < 26; m++)
{
if (count[m + 1] > count[m])
{
int temp = count[m];
count[m] = count[m + 1];
count[m + 1] = temp;
}
}
}
for (int q = 0; q < 26; q++)
sum += count[q] * (26 - q);
cout << sum << " ";
sum = 0;
for (int q = 0; q < 26; q++)
count[q] = 0;
}
delete[] name;
return 0;
}