King - 1 year ago 116
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++;
}
``````

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