leeCode算法--实现一个strStr()函数

题目:实现一个strStr()方法,要求strStr有俩个参数,hayStack和needle参数,找出字符串hayStack中needle的位置,并返回这个位置。如果找不到就返回-1.

解析:查找位置,只能双层遍历,依次比对。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var strStr = (haystack, needle) => {
for (let i = 0; i <= haystack.length; i++) {
let a = i, b = 0
while (b < needle.length &&
haystack[a] === needle[b]) {
a++
b++
}
if (b === needle.length) return i
}
return -1
}
strStr('', '') // 0
strStr('hello', 'll') // 2
strStr('aaaaa', 'bba') // -1

注意:整个代码结构是比较清晰易懂的,但是有几个地地方是需要注意:

  • for循环中i是要小于等于(<=)haystack.length,这是因为haystack和needle都可能出现为空的情况;
  • 双层循环,要用变量接一下外层循环的变量,这里需要知道的是,双层遍历,外层循环一次,内层循环要全循环完,才能开始外层的第二次循环,以此类推;
  • 注意while循环的条件。

That’s all!这就是KMP算法。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信