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;
}
}
}