题目描述:
我们要给每个字母配一个1~26之间的整数,具体怎么分配有你决定,但不同字母的完美度不同,而每一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母的大小写。
代码:
#include <stdio.h>
#include <string>
#include <stdlib.h>
int perfect(const char *s) {
char str[26] = "";
strncpy(str,s,strlen(s));
int num[26] = {0};
int len = strlen(str);
for(int i = 0;i<len;++i)
num[tolower(str[i])-97]++;
for(int i = 0;i<26;i++)
for(int j = 0;j<26-i-1;j++)
{
if(num[j]>num[j+1])
{
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
for(int i = 0;i<26;i++)
{
if(num[i]!=0)
printf("%d %d\n",i,num[i]);
}
int sum = 0;
for(int i = 0;i<26;i++)
sum+=num[i]*(i+1);
return sum;
}
int main()
{
const char *s = "dgdsxdddd";
int sum = perfect(s);
printf("%d\n",sum);
system("pause");
return 0;
}