/* Given a string of characters, return the character that appears the most often. Example: input = "Hello World!" return "l" */ const maxCharacter = (value) => { if (typeof value !== 'string') { throw new TypeError('The param should be a string') } else if (!value) { throw new Error('The param should be a valid string') } const occurrences = {} for (let i = 0; i < value.length; i++) { const char = value[i] if (/\s/.test(char)) continue occurrences[char] = occurrences[char] + 1 || 1 } let maxCharacter = null let maxCount = 0 Object.keys(occurrences).forEach(char => { if (occurrences[char] > maxCount) { maxCount = occurrences[char] maxCharacter = char } }) return maxCharacter } export { maxCharacter }