Related Articles

# GATE | Gate IT 2005 | Question 53

• Last Updated : 28 Jun, 2021

The following C function takes two ASCII strings and determines whether one is an anagram of the other. An anagram of a string s is a string obtained by permuting the letters in s.

```int anagram (char *a, char *b) {
int count [128], j;
for (j = 0;  j < 128; j++) count[j] = 0;
j = 0;
while (a[j] && b[j]) {
A;
B;
}
for (j = 0; j < 128; j++) if (count [j]) return 0;
return 1;
}
```

Choose the correct alternative for statements A and B.
(A) A : count [a[j]]++ and B : count[b[j]]–
(B) A : count [a[j]]++ and B : count[b[j]]++
(C) A : count [a[j++]]++ and B : count[b[j]]–
(D) A : count [a[j]]++and B : count[b[j++]]–

 `#include ``char` `a[100], b[100];``int` `main(``void``) {`` ``int` `flag;``  ``printf``(``"Enter first string\n"``);`` ``gets``(a);``  ``printf``(``"Enter second string\n"``);`` ``gets``(b);``  ``flag = 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;``return` `0;``}``int` `anagram (``char` `*a, ``char` `*b) {``int` `count [128], j;``for` `(j = 0; j < 128; j++) count[j] = 0;``j = 0;``while` `(a[j] && b[j]) {``count [a[j]]++;``count[b[j++]]--;``}``for` `(j = 0; j < 128; j++) ``if` `(count [j]) ``return` `0;``return` `1;``}`