赞
踩
问题描述:
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnr003/
来源:力扣(LeetCode)
解法一:indexOf
说明:不建议这样使用api
var strStr = function(haystack, needle) {
return haystack.indexOf(needle)
}
解法二:三指针
思路:p:记录父串的初始比较位,q:父串比较位,r:字串比较位。依次串比较
var strStr = function(haystack, needle) {
let p = q = r = 0
//结束条件:父串或字串走到头
while(q < haystack.length && r < needle.length){
//当父串和字串当前元素不相同时,初始位++,q回到初始位,r回到字串初始位
if(haystack[q] != needle[r]){
p++
q = p
r = 0
continue
}
//相等则比较下一项
q++
r++
}
//判断是否匹配
return r < needle.length ? -1 : p
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。