题解 | #查找兄弟单词#

查找兄弟单词

http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

#include<stdio.h>
#include<string.h>

int char_count(char *ptr1, char ch)
{
    int len = strlen(ptr1);
    int count = 0;
    for(int i=0; i<len; i++)
    {
        if(ch == ptr1[i])
            count++;
    }
    return count;
}

int judge(char *ptr1, char *ptr2)
{
    int len = strlen(ptr1);
    for(int i=0; i<len; i++)
    {
        if(char_count(ptr1, ptr1[i]) != char_count(ptr2, ptr1[i]))
            return 0;
    }
    return 1;
}

int main()
{
    int n, k;
    int cnt=0;
    scanf("%d ", &n);
    char str[1000][10];
    char bor[1000][10];
    char arr[10];
    for(int i=0; i<n; i++)
    {
        scanf("%s", str[i]);
    }
    scanf("%s", arr);
    scanf("%d", &k);
    int len = strlen(arr);
    for(int i=0; i<n; i++)
    {
        if(strlen(str[i]) != len)
            continue;
        if(strcmp(str[i], arr) == 0)
            continue;
        if(judge(arr, str[i]))
        {
            for(int j=0; j<len+1; j++)
                bor[cnt][j] = str[i][j];
            cnt++;
        }
    }
    char tmp[1][10];
    for(int i=0; i<cnt-1; i++)
    {
        for(int j=i+1; j<cnt; j++)
        {
            if(strcmp(bor[i],bor[j]) > 0)
            {
                for(int k=0; k<cnt; k++)
                {
                    tmp[0][k] = bor[i][k];
                    bor[i][k] = bor[j][k];
                    bor[j][k] = tmp[0][k];
                }    
            }
        }
    }
    printf("%d\n", cnt);
    if (k < cnt)
        printf("%s\n", bor[k-1]);
    return 0;
}
全部评论

相关推荐

去B座二楼砸水泥地:攻击力过弱,有待加强😂
点赞 评论 收藏
分享
10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务