两个字符串的字谜

时间:2015-05-08 01:50:16

标签: c

编写一个程序来查找2个给定字符串是否为字谜。

输入包含2个字符串。假设字符串中的所有字符都是小写字母或空格,字符串的最大长度为100。

示例输入和输出1: 输入第一个字符串 anitha 输入第二个字符串 amphisoft anitha和amphisoft不是字谜

示例输入和输出2: 输入第一个字符串 眼睛 输入第二个字符串 他们看 眼睛和他们看到的是字谜

示例输入和输出3: 输入第一个字符串 宿舍 输入第二个字符串 脏房间 宿舍和肮脏的房间都是字谜

#include <stdio.h>

int check_anagram(char [], char []);

int main()
{
   char a[100], b[100];
   int flag;

   printf("Enter first string\n");
   gets(a);

   printf("Enter second string\n");
   gets(b);

   flag = check_anagram(a, b);

   if (flag == 1)
      printf("\"%s\" and \"%s\" are anagrams.\n", a, b);
   else
      printf("\"%s\" and \"%s\" are not anagrams.\n", a, b);

   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;
}

我编写了代码,但它仅适用于第一个输入/输出,但第二个和第三个输入它不起作用。

1 个答案:

答案 0 :(得分:0)

您提供的代码有效。 由于您正在编写它只适用于第一个输入,我猜测问题是在您删除的循环区域中发布问题。

第一次不能工作的一个可能原因是在获得新输入之前没有清除a和b。

希望我帮忙,