Skip to content

Instantly share code, notes, and snippets.

@torressam333
Created December 8, 2022 21:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save torressam333/b6b7063ab73eeb438cefc305e38f4024 to your computer and use it in GitHub Desktop.
Save torressam333/b6b7063ab73eeb438cefc305e38f4024 to your computer and use it in GitHub Desktop.
Valid Anagram Challenge - Accounts for Whitespaces, special chars and letter casing
const validAnagram = (str1, str2) => {
// convert to lowercase and remove spaces
str1 = str1.replace(/\s+/g, "").toLowerCase();
str2 = str2.replace(/\s+/g, "").toLowerCase();
// Check for length once whitespace is removed
if (str1.length !== str2.length) return false;
// Only nums and lowercase letters allowed
const regex = /^[\w.-]+$/;
if (!regex.test(str1) || !regex.test(str2)) return false;
let chars = {};
for (let letter of str1) {
// Add in each letter to the store of chars
chars[letter] = (chars[letter] || 0) + 1;
}
for (let letter of str2) {
if (!chars[letter]) return false;
else chars[letter] -= 1;
}
return true;
};
console.log(validAnagram("texTtwi stti!2me", "tim2et!wisttext")); // false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment