Skip to content

Instantly share code, notes, and snippets.

@dragonza
Created March 4, 2018 10:03
Show Gist options
  • Save dragonza/5632ac18f2fdfce62960a3948f7e8609 to your computer and use it in GitHub Desktop.
Save dragonza/5632ac18f2fdfce62960a3948f7e8609 to your computer and use it in GitHub Desktop.
Anagrams
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