chore: merge "Tests check anagrams (#693)"

* add test cases for checkAnagram function to cover additional inputs and edge cases

* adjust spacing between tests to be more consistent with other files

* update CheckAnagram to return boolean value instead of string

* add a reference link and definition of Anagram to CheckAnagram documentation
This commit is contained in:
Charlie Moore
2021-09-23 01:59:55 -04:00
committed by GitHub
parent b399cf43e2
commit 19970c35b9
2 changed files with 69 additions and 12 deletions

View File

@ -1,3 +1,4 @@
// An [Anagram](https://en.wikipedia.org/wiki/Anagram) is a string that is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
// Anagram check is case sensitive; i.e. Aba and aba is not a anagram.
// inputs are strings i.e. str1 and str2
const checkAnagram = (str1, str2) => {
@ -8,7 +9,7 @@ const checkAnagram = (str1, str2) => {
// If both strings have not same lengths then they can not be anagram.
if (str1.length !== str2.length) {
return 'Not anagrams'
return false
}
// Use hashmap to keep count of characters in str1
@ -28,9 +29,8 @@ const checkAnagram = (str1, str2) => {
for (let i = 0; i < str2.length; i++) {
let previousCount = 0
// if str1CharCount has no key for str2[i] then not anagram.
if (!str1CharCount.has(str2[i])) {
return 'Not anagrams'
}
if (!str1CharCount.has(str2[i])) return false
previousCount = str1CharCount.get(str2[i])
str1CharCount.set(str2[i], previousCount - 1)
}
@ -38,10 +38,10 @@ const checkAnagram = (str1, str2) => {
// Now check if all entries in hashmap has zeros.
for (const key in str1CharCount) {
if (str1CharCount[key] !== 0) { return 'Not anagrams' }
if (str1CharCount[key] !== 0) return false
}
return 'Anagrams'
return true
}
export { checkAnagram }