4.20 28.实现strStr()
实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
题目分析
方案一
ES6新增includes()方法,判断haystack是否包含needle字符串;
如果包含则遍历haystack,找到needle[0],输出;
否则输出-1.
var s1 = 'hello world!'
var s2 = 'll'
if(s1.includes(s2)){
for(var i =0;i<s1.length;i++){
if(s1[i] == s2[0]){
console.log(i);
break;
}
}
}
else{
// return -1;
console.log(-1);
}
方案二
暴力,遍历haystack,找到needle[0];
设置flag为true,继续遍历needle.length大小,一旦不匹配,修改flag;
最后根据flag输出.
var strStr = function(haystack, needle) {
if(needle == ''){
return 0
}
var index = 0
for(let i = 0;i<haystack.length;i++){
if(haystack[i] == needle[0]){
var flag = true;
index = i;
// 已经判断出needle第一个的位置了,所以j从1开始
for(let j = 1;j<needle.length;j++){
if(haystack[i+j] !== needle[j]){
// 只要发现needle中存在不一样的
flag = false;
// 发现不匹配跳出判断
break;
}
}
}
if(flag){
return i
}
}
return -1
};