[해결로 표시] 지도로 단어 수 세기 - JavaScript 작업

  

3
주제 스타터

지도를 사용하여 텍스트에 포함된 단어의 개수를 계산해야 하며, 문자, digit 및 _(밑줄)의 모든 조합을 한 단어로 계산해야 합니다. 단어는 맵에 저장되어야 하며, key는 단어이고 값은 해당 단어가 텍스트에 포함된 횟수입니다. 일치하는 단어는 대소문자를 구분하지 않아야 합니다. 단어를 정렬된 순서대로 인쇄합니다.

입력은 하나의 항목(단어가 계산되어야 하는 텍스트)을 포함하는 strings의 array로 제공됩니다. 텍스트는 두 개 이상의 문장으로 구성될 수 있습니다.

예시:

입력:
너무 느리면 너무 느립니다.

출력:
'멀리' -> 2번
're' -> 1배
'느린' -> 2번
'too' -> 2번
'당신' -> 1배


입력:
JS 개발자는 서버 측 JS에 Node.js를 사용합니다. JS 개발자는 JS. -- 개발자용 JS --

출력:
'devs' -> 3번
'for' -> 2번
'js' -> 6회
'노드' -> 1배
'서버' -> 1배
'side' -> 1배
'사용' -> 2번


출력은 콘솔에 인쇄되어야 합니다. 지도의 각 단어를 각각 새 줄에 "'' -> 번" 형식으로 인쇄합니다.

1개 답글
2

제 JS 솔루션은 다음과 같습니다:

function countWordsWithMaps(inputLines) {
    let words = inputLines.join('\n').toLowerCase()
        .split(/[^A-Za-z0-9_]+/).filter(w => w != '');
    let wordsCount = new Map();
    for (let w of words)
        wordsCount.has(w) ? wordsCount.set(w,
            wordsCount.get(w) + 1) : wordsCount.set(w, 1);
    let allWords = Array.from(wordsCount.keys()).sort();
    allWords.forEach(w =>
        console.log(`'${w}' -> ${wordsCount.get(w)} times`));
}
 
//countWordsWithMaps([
//    "Far too slow, you're far too slow."
//]);
 
countWordsWithMaps([
    "JS devs use Node.js for server-side JS. JS devs use JS. -- JS for devs --"
]);
공유: