完美字符串 (字符哈希)

完美字符串 (字符哈希)_第1张图片

 

Hint: 首先统计各个字母出现的次数,这用到ASCII码,然后要根据统计的信息进行排序,然后再以此乘。

 

#include 
#include 

int main()
{
    char str[10001];
    int a[10001];
    int l, i, sum = 0, t, j, q, k;
    scanf("%s",str);
    memset(a,0,sizeof(a));
    l = strlen(str);
    for(i = 0;i < l;i++)
    {
        if(str[i] >= 'a'&&str[i] <= 'z')
        {
            t = str[i]-'a';
        }
        if(str[i] >= 'A'&&str[i] <= 'Z')
        {
             t = str[i]-'A';
        }
        a[t]++;
    }
    for(i = 0; i < 26;i++)
    {
        for(j = 0;j < 25-i;j++)
        {
            if(a[j] < a[j+1])
            {
                q = a[j];
                a[j] = a[j+1];
                a[j+1] = q;
            }
        }
    }
    int p = 26;
    for(k = 0;k < 26;k++)
    {
        sum += a[k] * p;
        p--;
    }
    printf("%d\n",sum);
    return 0;
}

 

你可能感兴趣的:(字符串的哈希)