#include <stdio.h>
int perfect(const char *s)
{
//每个字符构建很统计个数的结构体
struct letterForS
{
char letter ;
int count;
};
struct letterForS ch[26];
for(int i=0;i<26;i++)
{
ch[i].letter='a'+i;
ch[i].count=0;
}
int a = strlen(s);
char s1[a],s2[a];
strcpy(s1,s);
//统计字符出现的次数
for(int i=0;i<a;i++)
{
for(int j=0;j<26;j++)
{
if(ch[j].letter==s1[i])
ch[j].count++;
}
}
//根据字符出现的次数进行降序排序
for(int i=0;i<26;i++)
{
for(int j=i;j<26;j++)
{
if(ch[i].count<ch[j].count)
{
int temp = ch[i].count;
ch[i].count=ch[j].count;
ch[j].count=temp;
}
}
}
//计算最大完美度;
int re=0;
for(int i=0;i<26;i++)
{
re+=ch[i].count*(26-i);
}
return re;
}
int main(int argc, const char * argv[])
{
// insert code here...
char *ch="dad";
int ret=perfect(ch);
printf("%d",ret);
return 0;
}
int perfect(const char *s)
{
//每个字符构建很统计个数的结构体
struct letterForS
{
char letter ;
int count;
};
struct letterForS ch[26];
for(int i=0;i<26;i++)
{
ch[i].letter='a'+i;
ch[i].count=0;
}
int a = strlen(s);
char s1[a],s2[a];
strcpy(s1,s);
//统计字符出现的次数
for(int i=0;i<a;i++)
{
for(int j=0;j<26;j++)
{
if(ch[j].letter==s1[i])
ch[j].count++;
}
}
//根据字符出现的次数进行降序排序
for(int i=0;i<26;i++)
{
for(int j=i;j<26;j++)
{
if(ch[i].count<ch[j].count)
{
int temp = ch[i].count;
ch[i].count=ch[j].count;
ch[j].count=temp;
}
}
}
//计算最大完美度;
int re=0;
for(int i=0;i<26;i++)
{
re+=ch[i].count*(26-i);
}
return re;
}
int main(int argc, const char * argv[])
{
// insert code here...
char *ch="dad";
int ret=perfect(ch);
printf("%d",ret);
return 0;
}