题目:实现 strStr() 函数
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。
输入:haystack = "hello", needle = "ll"
输出:2
输入:haystack = "aaaaa", needle = "bba"
输出:-1
输入:haystack = "", needle = ""
输出:0
分析
通过下标索引读取字符串元素。
1)首先,判断子串needle的长度是否为0,如果为0则return 0
2)其次,嵌套循环判断父串haystack中是否包含子串needle。
3)最后,判断flag是否为true。为true表示包含返回i,即在父串中首次出现的下标;为false则返回-1,表示不包含。
代码
var strStr = function(haystack, needle) {
var flag = true
if(needle.length === 0){
return 0
}
for(var i=0;i<haystack.length;i++)
{
for(var j=0;j<needle.length;j++){
if(haystack[i+j]!==needle[j]){
// haystack[i+j]可以判断对应位置是否相同
// 只要某位置和子串不同就flag=false并退出本轮循环
flag = false
break
}
// 如果此位置和子串相同则flag=true
flag = true
}
// 循环完子串后,判断flag是否为true
if(flag){
return i
}
}
// 循环完毕后,如果没有返回i表示flag是否为false,表示不包含
return -1
};