Max Char
Directions
주어진 문자열에서 가장 많이 사용된 단어를 반환하기.
Examples
maxChar('abcccccccd') === 'c'
maxChar('apple 1231111') === '1'
1.
일단 우리는 주어진 문자열을 쪼개서 각 문자가 몇번 사용 되었는지 확인할 수 있어야 합니다.
const string = 'Hello World!'
const chars = {}
for (let char of string) {
console.log(chars) // 하단 주석처리
if (!chars[char]) {
chars[char] = 1
} else {
chars[char]++
}
}
// {}
// {H: 1}
// {H: 1, e: 1}
// {H: 1, e: 1, l: 1 }
// {H: 1, e: 1, l: 2 }
// {H: 1, e: 1, l: 2, o: 1 }
// ...
// {H: 1, e: 1, l: 3, o: 2, " ": 1, W: 1, r: 1, d: 1, !: 1}
TIP
위와같은 방법으로 문자열에서 각 문자가 얼마나 사용 되었는지 알아보았습니다. 이제는 가장 많이 사용된 문자를 반환할 차례입니다.
function maxChar(str) {
const charMap = {}
let max = 0
let maxChar = ''
for (let char of str) {
if (charMap[char]) {
charMap[char]++
} else {
charMap[char] = 1
}
}
for (let char in charMap) {
if (charMap[char] > max) {
max = charMap[char]
maxChar = char
}
}
return maxChar
}
module.exports = maxChar
WARNING
만약 많이 사용된 문자가 중복으로 발생할 경우 가장 앞에 나온 글자가 반환되어 집니다.
예를들어 문자열이 "Heelloo"와 같은경우 'e'가 반환되어집니다
Test
const maxChar = require('./index')
test('maxChar function exists', () => {
expect(typeof maxChar).toEqual('function')
})
test('Finds the most frequently used char', () => {
expect(maxChar('a')).toEqual('a')
expect(maxChar('abcdefghijklmnaaaaa')).toEqual('a')
})
test('Works with numbers in the string', () => {
expect(maxChar('ab1c1d1e1f1g1')).toEqual('1')
})