Check whether two strings are anagram of each other

 Given two strings and b consisting of lowercase characters. The task is to check whether two given strings are an anagram of each other or not. An anagram of a string is another string that contains the same characters, only the order of characters can be different.

Example 1:


a = codemummy, b = mummycode

Output: 1

Explanation: Both the string have same

characters with same frequency. So, 

both are anagrams.

Example 2:


a = allergy, b = allergic

Output: 0

Explanation: Characters in both the strings

are not same, so they are not anagrams.

method 1 :

use sorting:

sort both the string now check if the sorted strings are equal if they are equal return 1, else return 0.

c++ implementation:

bool isAnagram(string a, string b)
   return 1;
   return 0;

Time Complexity: O(nlogn) 
space Complexity: O(n) 

method 2 :

take one h[] array. increment the value in h[] array for characters in string a and decrement for characters in string b. Finally, if all count values are 0, then the two strings are anagram of each other. 

c++ implementation:

bool isAnagram(string a, string b){
   int n=a.length();
   int m=b.length();
   return 0;
  int h[26]={0};
  for(int i=0;i<n;i++)
  for(int i=0;i<n;i++)
  for(int i=0;i<26;i++)
      return 0;
  return 1;

Time Complexity: O(n) 
space Complexity: extra space for h[] array.

method 3 :

c++ implementation:

bool isAnagram(string a, string d){
 if (a.size() != d.size())
        return false;
    int count = 0;
    // Take sum of all characters of first String
    for (int i = 0; i < a.size(); i++) {
        count += a[i];
    // Subtract the Value of all the characters of second
    // String
    for (int i = 0; i < d.size(); i++) {
        count -= d[i];
    // If Count = 0 then they are anagram
    // If count > 0 or count < 0 then they are not anagram
    return (count == 0);

Time Complexity: O(n) 
space Complexity: O(1)