题解 | #名字的漂亮度#

名字的漂亮度

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;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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