DOJO004

  • Dashool 創辦人
  • 喜歡調酒
  • Rails、Nextjs、TypeScript

來刷 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 ] 開始尋找。

版權所有 © 2023 DOJO004

Deployed on Zeabur