Skip to content

[Leetcode] 28. Implement strStr() ​

Problem ​

문제 링크

Javascript String ν•¨μˆ˜μ€‘μ—μ„œ **String.prototype.indexOf()**λ₯Ό κ΅¬ν˜„ν•˜λŠ” 문제

Solution ​

  1. μ°Ύκ³ μžν•˜λŠ” 값이 λΉ„μ–΄μžˆμ„λ•ŒλŠ” 0을 λ°˜λ‚©ν•œλ‹€.

  2. haystack λ¬Έμžμ—΄μ„ μˆœμ„œλŒ€λ‘œ λΉ„κ΅ν•˜λ©΄μ„œ needle의 λ¬Έμžμ—΄κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ 두 λ°˜λ³΅λ¬Έμ„ μ΄μš©ν•΄μ„œ λΉ„κ΅ν•œλ‹€.

    • μ΄λ•Œ haystack이 남은 λ¬Έμžμ—΄μˆ˜κ°€ needle 보닀 μ μ§€μ•Šλ„λ‘ 쑰건을 μ€€λ‹€.
  3. haystack에 needle λ¬Έμžμ—΄μ΄ μ‘΄μž¬ν•˜λŠ” 경우 ν˜„μž¬ μˆœν™˜μ€‘μΈ haystack의 인덱슀λ₯Ό λ¦¬ν„΄ν•˜κ³  μ‘΄μž¬ν•˜μ§€μ•Šλ‹€λ©΄ -1을 λ¦¬ν„΄ν•œλ‹€.

JS Code ​

js
/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    if (!needle.length) return 0
    
    outer:for(let i = 0 ; i < haystack.length; i++) {
        if (haystack.length - i < needle.length) break
        for(let j = 0 ; j < needle.length; j++) {
            if(haystack[j + i] !== needle[j]) continue outer
        }
        return i
    }
    return -1
};