蓝桥杯--c语言解决算法训练 Anagrams问题

蓝桥杯–c语言解决算法训练 Anagrams问题

问题描述  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。

输入格式:输入有两行,分别为两个单词。

输出格式:输出只有一个字母Y或N,分别表示Yes和No。

输入输出样例样例输入Unclear

Nuclear样例输出Y

解题思路:将两个字符串转换成整型数组进行排序,再看两者是否相同。

#include
#include
int main()
{
    char a[80],b[80];
    int c[80],d[80],len1,len2,i,j,flag=1;
    gets(a);
    gets(b);
    len2=strlen(b);
    len1=strlen(a);
    if(len1!=len2)
    printf(“N”);
    else
    {
        for(i=0;i         {
            if(a[i]>=‘a’&&a[i]<=‘z’)
            c[i]=a[i]-97;
            else
            c[i]=a[i]-65;
            if(b[i]>=‘a’&&b[i]<=‘z’)
            d[i]=b[i]-97;
            else
            d[i]=b[i]-65;
        }
        for(i=0;i         {
            for(j=i;j             {
                if(c[i]>c[j])
                {
                    int temp;
                    temp=c[i];
                    c[i]=c[j];
                    c[j]=temp;
                }
            }
        }
        for(i=0;i         {
            for(j=i;j             {
                if(d[i]>d[j])
                {
                    int temp1;
                    temp1=d[i];
                    d[i]=d[j];
                    d[j]=temp1;
                }
            }
        }
        for(i=0;i         {
            if(c[i]!=d[i])
            {
                flag=0;
                break;
            }
        }
        if(flag)
        {
            printf(“Y”);
        }
        else
            printf(“N”);
    }
    return 0;
}

你可能感兴趣的:(蓝桥杯--c语言解决算法训练 Anagrams问题)