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

JavaScript로 두 문자열의 와일드카드 매칭 함수 구현하기

문제 정의

이번 글에서는 두 개의 문자열과 하나의 숫자 n을 인자로 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 두 문자열을 비교하여 서로 같은 문자들을 포함하고 있는지 검사합니다. 두 문자열이 문자의 순서와 관계없이 동일한 문자들을 담고 있거나, 서로 다른 문자가 최대 n개 이하라면 true를 반환하고, 그 외의 경우에는 false를 반환해야 합니다.

구현 아이디어

접근 방식은 다음과 같습니다.

첫 번째 문자열의 각 문자를 순서대로 순회하면서, 해당 문자가 두 번째 문자열에도 존재하는지 확인합니다. 존재하지 않는 문자가 발견될 때마다 카운트 값을 1씩 증가시키고, 카운트가 허용된 값 n을 초과하는 순간 즉시 false를 반환하여 불필요한 연산을 줄입니다. 모든 문자를 검사한 후에도 카운트가 n 이하라면 두 문자열은 조건을 만족하므로 true를 반환합니다.

예제 코드

const str1 = 'first string';
const str2 = 'second string';
const wildcardMatching = (first, second, num) => {
   let count = 0;
   for(let i = 0; i < first.length; i++){
      if(!second.includes(first[i])){
         count++;
      };
      if(count > num){
         return false;
      };
   };
   return true;
};
console.log(wildcardMatching(str1, str2, 2));
console.log(wildcardMatching(str1, str2, 1));
console.log(wildcardMatching(str1, str2, 0));

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

true
true
false

결과 분석

'first string'과 'second string'을 비교해 보면, 첫 번째 문자열에는 있지만 두 번째 문자열에는 없는 문자는 'f' 하나뿐입니다. 따라서 차이가 나는 문자의 개수는 1개입니다.

n이 2일 때와 1일 때는 허용 범위 내에 있으므로 true가 반환되고, n이 0일 때는 단 한 글자의 차이도 허용되지 않기 때문에 false가 반환되는 것을 확인할 수 있습니다.