题解 | #名字的漂亮度#

名字的漂亮度

http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

思路:

  1. 因为仅输入小写字母,所以没有进行不区分大小写的判断
  2. 首先判断相同字母的个数,个数最多的*26,然后依次往下减少
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int cmp(const void *a,const void *b)    //快排,从大到小
{
    return *(int*)b - *(int*)a;
}

int parse_str(char *str)
{
    if(!str)
    {
        return -1;
    }
    int count[26] = {0};
    int len = strlen(str);
    int count_len = 0;
    int max = 0;
    for(int i = 0; i < len; i++)
    {
        if(count[str[i]-'a'] == 0)
        {
            count_len++;
        }
        count[str[i]-'a']++;
    }
    //printf("count_len = [%d]\n", count_len);
    
    qsort(count, 26, sizeof(int), cmp);
    
    for(int i = 0; i < count_len; i++)
    {
        max += count[i]*(26-i);
    }
    printf("%d\n", max);
    return 0;
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    char str[n][10000];
    memset(str, 0, n*10000*sizeof(char));
    for(int i = 0; i < n; i++)
    {
        scanf("%s", str[i]);
        //printf("str[%d] = [%s]\n", i, str[i]);
    }
    
    for(int i = 0; i < n; i++)
    {
        parse_str(str[i]);
    }
    return 0;
}
全部评论

相关推荐

八股刚起步,看了javaguide,小林coding,还有面渣,感觉面渣是体验最好的,请问只看面渣够用吗,有不完善的需要补吗?
码农索隆:先背最基础的知识,然后理解情景题,现在面试大多数喜欢问情景题,更考验面试者的基础和临场发挥情况
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 13:15
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务