LeetCode: Valid Anagram Solution
Approach 1
Sort strings and compare
Time complexity: O(nlog(n))
Implementation
1var isAnagram = function (s, t) {2 const sortString = str =>3 str4 .split("")5 .sort((a, b) => a.localeCompare(b))6 .join("")7 return sortString(s) === sortString(t)8}
Approach 2
Alphabetically count and compare
Time complexity: O(n)
Implementation
1var isAnagram = function (s, t) {2 const [countS, countT] = [new Uint16Array(26), new Uint16Array(26)]34 for (let char of s) {5 countS[char.charCodeAt(0) - "a".charCodeAt(0)] += 16 }78 for (let char of t) {9 countT[char.charCodeAt(0) - "a".charCodeAt(0)] += 110 }1112 for (let i = 0; i < 26; i++) {13 if (countS[i] !== countT[i]) {14 return false15 }16 }1718 return true19}
References
Similar problems
Palindrome Permutation
Find All Anagrams in a String
Find Resultant Array After Removing Anagrams
Comments
Loading comments...
Tags
leetcode
neetcode
string
hash table
sorting
Apply and earn a $2,500 bonus once you're hired on your first job!
Clients from the Fortune 500 to Silicon Valley startups
Choose your own rate, get paid on time
From hourly, part-time, to full-time positions
Flexible remote working environment
A lot of open JavaScript jobs!!
Fact corner: Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.
Still hesitate? Read HoningJS author's guide on dealing with Toptal interview process.