Leetcode--28. 實現strStr()(JS版)

迷途小學生發表於2018-12-04

  大家好,今天我來繼續記錄一下我的leetcode刷題之路,希望大家一起共勉。首先還是一樣,我先把原題目放出來:

實現 strStr() 函式。

給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1

示例 1:

輸入: haystack = "hello", needle = "ll"
輸出: 2
複製程式碼

示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出: -1
複製程式碼

說明:

needle 是空字串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。

對於本題而言,當 needle 是空字串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。

  接下來我要講一下我的解題思路了,很明顯針對題目我們需要遍歷haystack字元竄,當發現有與needle字元竄中首字元相同的元素時,我就會利用String.substr從當前位置把往後needle.length長度的字元竄擷取出來與needle進行比較,如果相等則可以返回true。如果遍歷完haystack字元竄都沒有符合條件的則返回false.

*值得注意的是比較擷取出來的字元竄與needle字元竄時不能使用===而需要使用==.二者具體的區別各位可以自行百度,謝謝。

/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}``
 */
var strStr = function(haystack, needle) {
    if(!needle || needle.length <1){return 0}
    if(needle.length > haystack.length){
        return -1;
    }
    let subStr = '';
    for(let i=0,len=haystack.length;i<len;i++){
        if(haystack[i] === needle[0]){
            subStr = haystack.substr(i,needle.length);
            if(subStr == needle){
                return i;
            }
        }
    }
    return -1;
};複製程式碼



相關文章