?


Anagrams指的是具有如下特性的兩個單詞:在這兩個單詞當中,每一個英文字母(不區分大小寫)所出現的次數都是相同的。例如,Unclear和Nuclear、Rimon和MinOR都是Anagrams。編寫一個程序,輸入兩個單詞(只包含英文字母),然后判斷一下,這兩個單詞是否是Anagrams。每一個單詞的長度不會超過80個字符,而且是大小寫無關的。Input:長度不超過80個字符的兩個單詞,用空格隔開,不考慮字母大小寫 (大小寫無關)Output: yes或者no
輸入:Rimon MinOR
輸出:yes
?
代碼如下:


1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int main(void) 6 { 7 int i,len1,len2; 8 int num[2][100]; //統計單詞中字母個數 9 char ch[2][100]; //記錄兩個單詞 10 11 memset(num,0,sizeof(num)); 12 memset(ch,0,sizeof(ch)); 13 14 scanf("%s",ch[0]); 15 scanf("%s",ch[1]); 16 len1 = strlen(ch[0]); 17 len2 = strlen(ch[1]); 18 19 if (len1 != len2) 20 { 21 printf("no"); 22 return 0; 23 } 24 25 for (i=0 ; i<len1 ; i++) 26 { 27 //統計第一個單詞中各字母的個數 28 if (ch[0][i]>='a' && ch[0][i]<='z') 29 num[0][ch[0][i]-'a'] ++; 30 else 31 num[0][ch[0][i]-'A'] ++; 32 33 //統計第二個單詞中各字母的個數 34 if (ch[1][i]>='a' && ch[1][i]<='z') 35 num[1][ch[1][i]-'a'] ++; 36 else 37 num[1][ch[1][i]-'A'] ++; 38 } 39 40 for (i=0 ; i<len1 ; i++) 41 { 42 if (num[0][i] != num[1][i]) 43 { 44 printf("no"); 45 return 0; 46 } 47 } 48 49 printf("yes"); 50 return 0; 51 }
?
解題思路:
記錄兩個單詞后,依次對單詞中的字母個數做統計,
最后比較兩字母,
若出現數量不同的字母,輸出"no"
否則輸出"yes"