Anagrams问题

来源:互联网 发布:手机视频缓存软件 编辑:程序博客网 时间:2024/06/14 09:21

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

#include <iostream>#include<stdio.h>#include"stdlib.h"#include"ctype.h"#include"string.h"using namespace std;int char_count[26]={0};struct ca{               char ch;            int   a;};int main(){    int yes=1;    ca c[80]={0};    char a[80]={0},b[80]={0};    cin>>a>>b;    for(int i=0;i<strlen(a);i++)    {        c[i].ch=a[i];    }    for(int i=0;i<strlen(a);i++)    {           for(int j=0;j<strlen(a);j++)                    if(isalpha(a[i]))//isalpha是ctype里判断是否为字母的函数                    {                        a[i] = tolower(a[i]);//tolower是ctype里大小字母转换函数                        if(c[i].ch == a[j])                            c[i].a++;                    //  b[i] = tolower(b[i]);                    // char_count[a[i]-'a']++;                    }    }     /*for(int i=0;i<strlen(a);i++)    {        cout<<c[i].ch<<" "<<c[i].a<<endl;    }*/    /*  for(int j=0;j<80;j++)        {            cout<<char_count[j]<<endl;        }*/    for(int i=0;i<strlen(a);i++)    {            int n=0;            for(int j=0;j<strlen(b);j++)            {                if(c[i].ch==b[j])                {                    n++;                }            }            //cout<<n;             if(c[i].a!=n/*||char_count[a[i]-'a']!=n*/)            {                cout<<"N";                return 0;            }    }    cout<<"Y";    return 0;//  cout<<a<<b;}
0 0