242_Valid Anagram
Level: easy
Tag: string, sort, hash table
Question
Idea
If s and t have different lengths, t must not be an anagram of s and we can return early.
For the main body of the algorithm, there are several solutions with different time complexity.
Sort both strings and compare them. If t is an anagram of s, sorting both strings will result in two identical strings.
Count occurrences of each letter in the two strings, store in dictionary, and compare two dictionaries. If t is an anagram of s, the two dictionaries should be equal.
Complexity 1
Time complexity :. Assume that
n
is the length ofs
andt
, sorting costs and comparing two strings costs . Sorting time dominates and the overall time complexity is .Space complexity : . Space depends on the sorting implementation which, usually, costs O(1) auxiliary space if
heapsort
is used.
Complexity 2
Time complexity :. Because we access each letter only once.
Space complexity : . Because at most we have 26 various letters to store in the dictionary. It's a constant as the length of
s
andt
increase.
Solution 1 (sort)
Solution 2 (no sort, using dictionary)
Solution 3 (no sort, using count table, same time/space complexity as solution 2)
Questions
What if the inputs contain unicode characters?
Last updated