개발 공부/알고리즘 문제 풀이

[LeetCode] 792. Number of Matching Subsequences

종범2 2021. 6. 22. 21:45

문제

LeetCode 792. Number of Matching Subsequences

 

https://leetcode.com/problems/number-of-matching-subsequences/

 

Number of Matching Subsequences - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

언어

자바스크립트(JavaScript)

 

접근 방법

  1. word의 한 글자씩 loop를 실행한다.
  2. s에 word의 글자가 존재하면 그 전의 글자는 모두 없앤다.
  3. s에서 일부 없어진 글자 중에서 word의 글자가 존재하지 않으면 Subsequences가 아님으로 판단한다.

코드

/**
 * @param {string} s
 * @param {string[]} words
 * @return {number}
 */
var numMatchingSubseq = function(s, words) {
    let result = 0;
    words.forEach(word=>{
        let isSub = true;
        let str = s;
        for (let i=0; i<word.length; i++){
            let idx = str.indexOf(word[i]);
            if(idx === -1){
                isSub = false;
                break;
            }else{
                str = str.slice(idx+1);
            }
        }
        if(isSub){
            result ++;
        }
    });
    return result;
};

결과

Runtime: 120 ms, faster than 99.54% of JavaScript online submissions for Number of Matching Subsequences.

Memory Usage: 47.1 MB, less than 67.59% of JavaScript online submissions for Number of Matching Subsequences.

 

복기

  1. slice를 떠올리면 어렵지 않다.