问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
输入格式:输入有两行,分别为两个单词。
输出格式:输出只有一个字母Y或N,分别表示Yes和No。
输入输出样例
样例输入
Unclear
Nuclear
样例输出
Y
代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 using namespace std; 4 5 int main(void) 6 { 7 char ch1[80+1]; 8 char ch2[80+1]; 9 scanf("%s",ch1); 10 scanf("%s",ch2); 11 if (strlen(ch1)!=strlen(ch2)) 12 { 13 printf("N\n"); 14 return 0; 15 } 16 17 int num1[30]; 18 int num2[30]; 19 memset(num1,0,sizeof(num1)); 20 memset(num2,0,sizeof(num2)); 21 int len = strlen(ch1); 22 for (int i=0 ; i<len ; i++) 23 { 24 if (ch1[i]>='a' && ch1[i]<='z') 25 num1[ch1[i]-'a'] ++; 26 else 27 num1[ch1[i]-'A'] ++; 28 29 if (ch2[i]>='a' && ch1[i]<='z') 30 num2[ch2[i]-'a'] ++; 31 else 32 num2[ch2[i]-'A'] ++; 33 } 34 35 for (int i=0; i<30; i++) 36 { 37 if (num1[i]!=num2[i]) 38 { 39 printf("N\n"); 40 return 0; 41 } 42 } 43 printf("Y\n"); 44 return 0; 45 }
解题思路:
1.判断两字符串是否相同
2.记录两个字符串的字符个数
3.判断两个字符串的字符个数是否相同