Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
题目
实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/im…
示例 1:
输入:haystack = "hello", needle = "ll"
输出:2
示例 2:
输入:haystack = "aaaaa", needle = "bba"
输出:-1
示例 3:
输入:haystack = "", needle = ""
输出:0
思路分析
思路1
- 直接使用indexOf,存在返回下边,不存在返回-1
思路2
暴力比较
- 双循环
- 拿haystackd[i]开始比较,对比needle的每一个值,如果为true,则拿到下标
- 如果为false,则返回再次比对,至到返回所在位置
- 若比对不到,则在最外层返回-1
代码
思路1
let strStr = function(haystack, needle) {
/**
* 直接使用indexOf,存在返回下边,不存在返回-1
* */
return haystack.indexOf(needle)
}
思路2
let strStr = function(haystack, needle) {
/**
* 字符串比较
* 拿haystackd[i]开始比较,对比needle的每一个值,如果为true,则拿到下标
* 如果为false,则返回再次比对,至到返回所在位置
* 若比对不到,则在最外层返回-1
*
* */
const n = haystack.length, m = needle.length
for(let i = 0; i + m <= n; i++) {
let flag = true
for(let j = 0; j < m; j++) {
if(haystack[i+j] != needle[j]) {
flag = false
break
}
}
if(flag) {
return i
}
}
return -1;
}