King King - 1 month ago 18
C Question

Anagram of a string using pointer arithmatic

Here is the code to find the anagram for a string. I am using pointer array to do it but want to do it using pointer arithmetic.

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


--> How to using pointer arithmetic and find it.

In the while loop :

while (a[c] != '\0')
{
first[a[c]-'a']++;
c++;
}


--> Can we modify it to below way so that it will work

while(*(a+c)!='\0')
{
*(first *(a+c)-'a')++;
c++;
}

Answer

first[a[c]-'a']++ = first[*(a+c)-'a']++ = (*(first+(*(a+c)-'a')))++