给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

1
2
3
4
5
6
7
8
9
10
11
示例 1:

输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。
示例 2:

输入:haystack = "leetcode", needle = "leeto"
输出:-1
解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。

提示:

1 <= haystack.length, needle.length <= 104
haystack 和 needle 仅由小写英文字符组成

solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function(haystack, needle) {
if (haystack == needle) return 0;
if (haystack.length < needle.length) return -1;
let idx = 0;
let idx2 = 0;
while(idx < haystack.length - 1) {
if (idx2 > 0 && haystack[idx] != needle[idx2]) {
idx = idx - idx2 + 1;
idx2 = 0;
}
if (haystack[idx] == needle[idx2]) {
if (idx2 == needle.length -1) {
break;
}
idx2++;
}
idx++;
}
return haystack[idx] == needle[idx2] && idx2 == needle.length -1 ? idx - idx2 : -1;
};

最后更新: 2024年04月15日 00:15