解题思路
外部创建一个for循环,当匹配到字母与目标字符串首位相同时,进入内部while循环进行逐个比对,发现不相同的字母是执行break,跳出while循环,继续执行for循环;如果内部while循环依次匹配到了所有目标字符,那么就直接return当前i,这就是第一个匹配的下标
代码
var strStr = function (haystack, needle) {
//创建for循环来判断 外层循环确定首字母
for (let i = 0; i < haystack.length; i++) {
let curr = haystack[i];
if (curr == needle[0]) {
//定义获取当前needle字符的坐标
let needIndex = 0;
// 新建一个变量来存储i
let j = i;
while (needle[needIndex]) {
//如果发现两者不等,则break,进行下一个for循环,否则则更新 j 与 needIndex
if (haystack[j] !== needle[needIndex]) {
break;
} else {
j++;
needIndex++;
}
//如果已经查到匹配的字符串,直接返回当前的i
if (needIndex == needle.length) {
return i;
}
}
}
}
//执行结束也没有找到,就返回-1
return -1;
};