-1

文字列アナグラムをチェックしています。
しかし、関数の背後にあるロジックを理解できませんint check_anagram(char a[], char b[])

このコードは、小文字または大文字の文字列アナグラムのみを提供します。大文字と小文字を区別しないようにしたい。必要な変更をお願いします。

#include<stdio.h>
#include<conio.h>
#include<string.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);
   system("pause");
   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. first[a[c]-'a']++;
  2. second[b[c]-'a']++;
4

2 に答える 2