美文网首页
每天一题LeetCode【第22天】

每天一题LeetCode【第22天】

作者: 草稿纸反面 | 来源:发表于2017-02-11 00:09 被阅读87次

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【第22天】

      本文链接:https://www.haomeiwen.com/subject/pxvnittx.html