Created
March 4, 2018 10:03
-
-
Save dragonza/5632ac18f2fdfce62960a3948f7e8609 to your computer and use it in GitHub Desktop.
Anagrams
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function anagrams(stringA, stringB) { | |
const aCharMap = charMap(stringA.replace(/[^\w]/g, '').toLowerCase()); | |
const bCharMap = charMap(stringB.replace(/[^\w]/g, '').toLowerCase()); | |
// return false immediately when the length of two char Map is not the same | |
if (Object.keys(aCharMap).length !== Object.keys(bCharMap).length) { | |
return false; | |
} | |
// comparison | |
for (let char in aCharMap) { | |
if (aCharMap[char] !== bCharMap[char]) { | |
return false; | |
} | |
} | |
return true; | |
} | |
// helper function | |
function charMap(str) { | |
let charMap = {}; | |
for (let char of str) { | |
charMap[char] = charMap[char] + 1 || 1; | |
} | |
return charMap; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment