大家好,今天我來繼續記錄一下我的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;
};複製程式碼