Anagram Pairs

Posted: 19 Nov, 2018
Difficulty: Moderate


Try Problem

Pre-requisites: Anagrams are defined as words or names that can be formed by rearranging letters of another word. Such as "spar" can be formed by rearranging letters of "rasp". Hence, "spar" and "rasp" are anagrams.

Other examples include:

'triangle' and 'integral'
'listen' and 'silent'

Now, Coding Ninjas has the following task for you:

You would be given two strings. You have to tell whether these strings form an anagram pair or not. The strings form an anagram pair if the letters of one string can be rearranged to form another string.

Since it is a binary problem, there is no partial marking. Marks will only be awarded if you get all the test cases correct. 
Input format:
The first and the only line of input contains two single space-separated strings Str1 and Str2, respectively.
Neither of the two input strings contains spaces in between, except to differentiate one from the other.

Also, both the strings will be in lowercase characters.
Output format:
The only line of output contains either True or False. True, if the given two strings form an anagram pair and False otherwise.

You don't have to explicitly print by yourself. It has already been taken care of.   
1 <= N <= 10^5 
1 <= M <= 10^5
Where N and M are the lengths of the strings str1 and str2 , respectively.

Time Limit: 1sec
Approach 1

Anagrams have a unique property: the counts of each distinct character present in both strings are the same. One way to check this is: 

  1. Sort both strings, so that all the same characters come together
  2. Then loop through both strings together and check each element in both strings one by one
  3. If at any position, the characters are found to be different or if the lengths of the two strings are different, they cannot be anagrams
  4. Otherwise, they will be anagrams
Try Problem