來刷 LeetCode 吧! 15 28. Find the Index of the First Occurrence in a String
LeetCode
題目分析
- 提供兩個 strings,needle、haystack。
- 回傳在 needle 發現 haystack 的 index,若沒有,回傳 -1。
第一直覺
JS 剛好有個 function 可以使用
var strStr = function(haystack, needle) { return haystack.indexOf(needle); };
不使用 indexOf
- 透過兩個迴圈進行比較
var strStr = function (haystack, needle) { // 第一個迴圈代表起始點 for (let i = 0; i <= haystack.length - needle.length; i++) { let j; // 第二個迴圈檢查起始點 i 後面的字串是否皆符合 needle for (j = 0; j < needle.length; j++) { if (haystack[i + j] !== needle[j]) { break; } } // 如果完整的 needle 被找到,返回其起始索引 if (j === needle.length) { return i; } } // 迴圈跑完依然沒有找到符合的字串,回傳 -1 return -1; };
在第一個迴圈使用 haystack.length - needle.length 原因為,當找到第一個匹配的字符時,只要檢查 needle.length 的長度內是否皆符合( 第二個迴圈 ),若沒有再從 haystack[ i +1 ] 開始尋找。