字谜字符串只不过是在另一个字符串中出现相同次数的所有字符,我们称之为字谜。
用户输入两个字符串。我们需要计算每个字母(“ a”至“ z”)出现在其中的次数,然后比较它们相应的计数。字符串中字母的出现频率是它出现在其中的次数。
如果两个字符串对特定字母的频率计数相同,那么我们可以说这两个字符串是字谜。
字符串1-abcd
字符串2-bdac
这两个字符串具有相同的字母,仅出现一次。因此,这两个字符串是字谜。
字符串1-programming
字符串2-gramming
输出-字符串不是字谜。
以下是字谜的C程序-
#include <stdio.h> int check_anagram(char [], char []); int main(){ char a[1000], b[1000]; printf("Enter two strings\n"); gets(a); gets(b); if (check_anagram(a, b)) printf("The strings are anagrams.\n"); else printf("The strings aren't anagrams.\n"); return 0; } int check_anagram(char a[], char b[]){ int first[26] = {0}, second[26] = {0}, c=0; // 计算第一个字符串的字符频率 while (a[c] != '\0') { first[a[c]-'a']++; c++; } c = 0; while (b[c] != '\0') { second[b[c]-'a']++; c++; } // 比较字符的出现次数 for (c = 0; c < 26; c++) if (first[c] != second[c]) return 0; return 1; }
输出结果
执行以上程序后,将产生以下输出-
Run 1: Enter two strings abcdef deabcf The strings are anagrams. Run 2: Enter two strings tutorials Point The strings aren't anagrams.