Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열에서 반복되는 단어 개수 세기

문제 소개

문자열 안에 두 번 이상 등장하는 단어가 있을 때, 그러한 단어의 개수를 세는 JavaScript 함수를 작성해야 합니다.

예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다 −

const str = "car bus jeep car jeep bus motorbike truck";

이 문자열에서 'car', 'bus', 'jeep' 세 단어가 각각 두 번씩 반복되므로, 출력 결과는 다음과 같아야 합니다 −

3

예제 코드

다음은 위 문제를 해결하는 코드입니다 −

const str = "car bus jeep car jeep bus motorbike truck";
const countRepetitive = str => {
   const strArr = str.split(" ");
   let count = 0;
   for(let i = 0; i < strArr.length; i++){
      if(i === strArr.lastIndexOf(strArr[i])){
         continue;
      };
      count++;
   };
   return count;
};
console.log(countRepetitive(str));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다 −

3

코드 동작 원리

이 코드의 핵심 로직을 단계별로 살펴보겠습니다.

  • split(" "): 입력받은 문자열을 공백을 기준으로 분할하여 단어 배열을 생성합니다.
  • lastIndexOf(): 현재 순회 중인 인덱스와 해당 단어가 배열에서 마지막으로 등장하는 인덱스를 비교합니다.
  • 두 값이 서로 같다면 그 단어의 마지막 등장 지점이므로 continue로 건너뛰고, 그렇지 않다면 중복 등장으로 판단하여 카운트를 1 증가시킵니다.

결국 이 방식은 각 단어의 마지막 등장 위치만 제외하고 나머지 등장 횟수를 모두 더하는 것과 같으므로, 반복적으로 나타나는 단어의 개수를 정확히 구할 수 있습니다.