function charCount(input) {
if (!input) {
return {};
}
if (typeof input !== 'string') {
throw new Error('Input is not String');
}
let result = new Object();
// 문자열을 소문자로 바꾸고 문자 단위로 나눈 뒤
// 소문자이고 숫자인지 정규식을 사용해 필터링하고 정렬합니다.
let charArray = input
.toLowerCase()
.split('')
.filter((c) => /[a-z0-9]/.test(c))
.sort();
for (let i = 0; i < charArray.length; i++) {
let char = charArray[i];
result[char] = result.hasOwnProperty(char) ? result[char]++ : 1;
}
return result;
}
출력 예시
console.log(charCount('abc'));
// { a: 1, b: 1, c: 1 }
console.log(charCount('c b a a a 1 2 3'));
// { '1': 1, '2': 1, '3': 1, a: 1, b: 1, c: 1 }
console.log(charCount(123));
// Error: Input is not String
console.log(charCount(''));
// {}
console.log(charCount());
// {}
console.log(charCount('Hi, my name is Jinsu!!'));
// { a: 1, e: 1, h: 1, i: 1, j: 1, m: 1, n: 1, s: 1, u: 1, y: 1 }
다른 방식
function charCount2(str) {
let obj = new Object();
for (const char of str) {
char = char.toLowerCase();
if (/[a-z0-9]/.test(char)) {
obj[char] = ++obj[char] || 1;
}
}
return obj;
}
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
javascript. 버블, 선택, 삽입 정렬 (0) | 2020.09.13 |
---|---|
Problem Solving Approach (0) | 2020.07.09 |
자바스크립트. 정렬 순서 (0) | 2020.07.04 |
자바스크립트. for 반복문 수행시간 비교 (0) | 2020.07.04 |
Analyzing Performance of Arrays and Objects (0) | 2020.07.04 |