It is one of the most asked interview question from the string data structure . Write a program to find whether the two strings are Anagram or not .
Anagram :
Two strings are said Anagram if both of them have same letters for the same number of frequency .
String str1 = "coding" ; 
String str2 = "ingcod";
Then str1 and str2 are the anagrams to each other .
In this article we are going to see how can we find out two strings are anagram or not .
Code :
public class StringE 
{
    public static boolean anagram(String str1, String str2)
    {
        //creating an array of length 26
        int []arr= new int[26];
        //creating frequency array
        for(int i=0;i<str1.length();i++)
        {
            //incrementing the values for first string
            arr[str1.charAt(i)-'a']++;        
        }
        //doing opposite with the frequency array
        for(int i=0;i<str2.length();i++)
        {
            arr[str2.charAt(i)-'a']--;
        }
        //if there exist non zero values then not anagram
        for(int i=0;i<26;i++)
        {
            if(arr[i]!=0)
                return false;
        }
        //will return true if all values are zero
        return true;   
    }
    public static void main(String[] args)
    {
        String str1= "qwekakh";
        String str2= "hsfajja";
        System.out.println(anagram(str1, str2));
        System.out.println(anagram("hi", "ih"));
    }
}
Output
    false
    true
Logic :
1. First of all we will create a frequency array for the letters in string first .
String str = "hindi";
Then the array will have the frequency of each letter. Array will look like this.
arr = { 0,0,0,1,0,0,0,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}
2. After creating this frequency array we will do the same but opposite with the second string for every letter we will decrement the value of array by one . 
String str2 = "indih";
Then for every letter in string we will decrement the array value . Array will look like this.
arr = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
So now as you can see our array contains all zero that means these two strings are anagram . If array contains any non zero value then these strings are not anagrams . 

