每天一題LeetCode【第22天】

T28. Implement strStr()【Easy

題目

實現方法strStr()

返回字符串 needle 在字符串 haystack 中最先出現的 index(序號),如果 haystack 中不包含 needle,就返回 -1。

思路

用 i 來遍歷 haystack 指代詞的 index ,用 needle.charAt(j) 和 haystack.charAt(i + j) 來比較來識別 needle 字符串是否在 haystack 中

具體思路看代碼還有我寫的注釋吧這里還是舉個例子比較容易讓人理解代碼的思路

舉個栗子 (? ??_??)?: 
haystack="Iamverysmart" needle="very"
遍歷情況:
I!=v,break,下一個
a!=v,break
...
v==v,e==e,r==r,y==y
長度達到needle.length,匹配成功,返回 v 所對應的i

代碼

代碼取自 Top Solution,稍作注釋

public int strStr(String haystack, String needle) {
  //i是對haystack的遍歷
  for (int i = 0; ; i++) {
    //j是對needle的遍歷
    for (int j = 0; ; j++) {
      //當j == needle.length()時代表沒有break,所以代表匹配成功,返回當前i就是對應的值
      if (j == needle.length()) return i;
      //當i + j > haystack.length()時是不可能有匹配的,所以當相等時還沒時,就代表不存在
      if (i + j == haystack.length()) return -1;
      //代表i~i+needle.length和needle的第j+1個字符不匹配,不用再往下比了
      if (needle.charAt(j) != haystack.charAt(i + j)) break;
    }
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,775評論 0 33
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 一、 1、請用Java寫一個冒泡排序方法 【參考答案】 public static void Bubble(int...
    獨云閱讀 1,421評論 0 6
  • 1、用C語言實現一個revert函數,它的功能是將輸入的字符串在原串上倒序后返回。 2、用C語言實現函數void ...
    希崽家的小哲閱讀 6,354評論 0 12
  • 直到很多年后,父親有一次與我并肩對付過在京城擺下擂臺的洋鬼子,才顯露了一番他真正的武藝。那連綿不絕,勢如潮水一般的...