蓝桥杯:算法训练 Anagrams问题

来源:互联网 发布:ftp传输数据的具体方式 编辑:程序博客网 时间:2024/05/20 23:03

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

思想:
先把单词的字母全部换成小写。
对于每一个单词,有:
这里写图片描述

#include<stdio.h> #include<string.h> void A2a(char* s);void count(int* A,char* s);int main(){    char s1[88]={'\0'};    char s2[88]={'\0'};    int A[26+1]={0};    int B[26+1]={0};    int i=0;    //输入数据     gets(s1);    gets(s2);    //字符串大写都变成小写    A2a(s1);    A2a(s2);    //对每个单词的每个字母进行统计    count(A,s1);    count(B,s2);    //比较A与B是否相同    for(i=1;i<=26;i++)    {        if(A[i]!=B[i])        {            printf("N");            return 0;        }    }    printf("Y");    return 0;}void A2a(char* s){    int i=0;    int l=strlen(s);    for(i=0;i<l;i++)    {        if(s[i]>='A' && s[i]<='Z')        {            s[i]=s[i]+32;        }    }    return;}void count(int* A,char* s){    int i=0;    int l=strlen(s);    for(i=0;i<l;i++)    {        A[s[i]-'a'+1]++;    }    return;}
0 0
原创粉丝点击