蓝桥杯- 算法训练 Anagrams问题

来源:互联网 发布:淘宝黑莓 编辑:程序博客网 时间:2024/05/20 20:57

问题描述

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

样例输入

Unclear
Nuclear

样例输出 Y

#include <stdio.h>#include <ctype.h>#include <string.h>int main(){    char a[80],b[80];    int i,j,n,m,x=0,y=0;    gets(a);//输入a字符串    gets(b);//输入b字都穿    for(i = 0; i < sizeof(a); i++)//将a中的字母全部转换成小写        a[i] = tolower(a[i]);    for(i = 0; i < sizeof(b); i++)//将b中的字母全部转换成小写        b[i] = tolower(b[i]);    n=strlen(a);//计算a字符串长度    m=strlen(b);//计算b字符串长度    if(n==m)//判断:若a与b长度不相等则输出‘N’    {        for(i=0;i<n;i++)        {            for(j=0;j<m;j++)            {                if(a[i]==b[j])//将a中的字符与b中的逐个比较                {                    x++;//若相等则x++,若全部相等则x的次数与a字符串长度相等                    break;//一旦相等退出循环,进行下一个字符比较                }            }        }        for(j=0;j<n;j++)        {            for(i=0;i<m;i++)            {                if(b[j]==a[i])//将b中的字符与a中的逐个比较                {                    y++;//若相等则y++,若全部相等则y的次数与b字符串长度相等                    break;//一旦相等退出循环,进行下一个字符比较                }            }        }        if(x==n&&y==m)//若x与n相等且y与m相等则输出Y        {            printf("Y");        }else        {            printf("N");        }    }else    {        printf("N");    }    return 0;}
1 0