Problem of the day
You are given two strings 'str1' and 'str1'.
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.
Pre-requisites:
Anagrams are defined as words or names that can be formed by rearranging the 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'
Note:
Since it is a binary problem, there is no partial marking. Marks will only be awarded if you get all the test cases correct.
The first and the only line of input contains two single space-separated strings Str1 and Str2, respectively.
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.
Remember/Consider:
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.
rasp spar
True
Since both the strings have one 'a', one 'p', one 'r', and one 's', they are anagrams.
rasp spaz
False
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
Can you solve this in O( N ) time?
Is there a specific property of anagrams that can come in handy? Something that is related to the number/count of characters?
Anagrams have a unique property: the counts of each distinct character present in both strings are the same. One way to check this is:
O(N * log(N) + (M * log(M))), where N and M are the lengths of the two input strings.
Since we are sorting the strings, the time complexity will be O(N * log(N) + (M * log(M))).
O(1).
Constant space is used.