logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

[LeetCode] Find the Index of the First Occurrence in a String

[LeetCode] Find the Index of the First Occurrence in a String
CodingTest
성훈 김
2025년 8월 23일
목차

문제 링크

 

문제 요구 조건

  • haystack 에서 needle이 포함되는지 확인
  • 포함이 된다면 인덱스를 반환
  • 포함이 안된다면 -1을 반환
 

나의 문제 풀이

이번 문제를 푸는 데에는 substring() 함수를 사용하는 것이 중요했다.
JavaScript
/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function (haystack, needle) {
    let index = -1;

    for (let i = 0; i < haystack.length; i++) {
        if (haystack[i] !== needle[0]) {
            continue;
        }

        const subString = haystack.substring(i, (needle.length + i));

        if (subString === needle) {
            index = i;
            break;
        }
    }
    return index;
};
 
  1. 반환 인덱스 값을 -1로 세팅
  1. for문으로 순회하면서 needle의 첫 글자랑 매칭 되는지 확인
  1. 매칭이 안되면 continue로 아래 로직을 실행하지 않고 다음 순회
  1. 매칭이 되면 substring으로 해당 지점에서 needle.length까지 텍스트 추출
  1. 텍스트 비교후 매칭이 되면 인덱스를 업데이트후 종료
 

정답 문제 풀이

다른 사람들의 문제를 푼 방식은 비슷했지만, 인덱스를 따로 사용하지 않고 -1을 디폴트로 반환하고, 순회하며 매칭이 되는 조건에만 인덱스를 리턴을 하여, 코드가 좀 더 깔끔하고 효율적인 것을 확인할 수 있었다.
 
JavaScript
/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    let n = haystack.length;
    let m = needle.length;

    for (let i = 0; i <= n - m; i++) {
        if (haystack.substring(i, i + m) === needle) {
            return i;
        }
    }
    return -1;
};