[검색 알고리즘] - Naive 문자열 탐색

Donggu(oo)·2023년 2월 2일
0
post-thumbnail

1. Naive 문자열 탐색


  1. str1[i + j] !== str2[j] 조건에서 아래 조건 중 하나라도 일치하지 않는 경우가 나온다면 j 반복문을 탈출하여 i 반복문 부터 다시 시작한다.

    • str1[0 + 0] === str2[0]
    • str1[0 + 1] === str2[1]
    • str1[0 + 2] === str2[2]
  2. 위의 조건을 전부 만족하게 되면 jstr2.length - 1과 같아진다. 같아진다는 뜻은 str2를 끝까지 돌렸는데 위의 조건에 걸리지 않았다는 뜻으로 str2와 일치하는 문자열을 str1에서 찾은 것이다. 따라서 count를 1 증가시킨다.

function findStr(str1, str2) {
    let count = 0;

    for (let i = 0; i < str1.length; i++) {
        for (let j = 0; j < str2.length; j++) {
            if (str1[i + j] !== str2[j]) {
                break;
            } else if (j === str2.length - 1) {
                count++;
            }
        }
    }
    return count;
}
console.log(findStr('wowomgzomg', 'omg'))

0개의 댓글