微信公众号:醉前端关注可了解更多题目。
题 目
Q:
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
- 示例 1:
输入: haystack = "hello", needle = "ll",
输出: 2
- 示例 2:
输入: haystack = "aaaaa", needle = "bba",
输出: -1
说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
答 案
const strStr = (haystack, needle) => {
if (needle === "") return 0;
if (haystack === "") return -1;
let inc = [];
for (let i = 0; i < needle.length; i++) {
for (let j = 0; j <= i; j++) {
if (needle[j] !== needle[i - j]) {
inc[i] = j + 1;
break;
}
if (j === i && needle[j] === needle[i - j]) {
inc[i] = j + 1;
}
}
}
let i = 0;
let l = needle.length;
while (i < haystack.length) {
for (let j = 0; j < l; j++) {
if (needle[j] !== haystack[i + j]) {
i += inc[j];
break;
}
if (j === l - 1 && needle[j] === haystack[i + j]) {
return i;
}
}
}
return -1;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。