Find the index of the first occurrence in a string
class Solution:
def getNext(self, patt):
next = [0] * len(patt)
j = 0
for i in range(1, len(patt)):
while j > 0 and patt[i] != patt[j]:
j = next[j - 1]
if patt[i] == patt[j]:
j += 1
next[i] = j
return next
def strStr(self, haystack: str, needle: str) -> int:
next = self.getNext(needle)
j = 0
for i in range(len(haystack)):
while j > 0 and haystack[i] != needle[j]:
j = next[j - 1]
if haystack[i] == needle[j]:
j += 1
if j == len(needle):
return i - j + 1
return -1
Find the Index of the First Occurrence in a String
Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Example 1:
Input: haystack = "sadbutsad", needle = "sad" Output: 0 Explanation: "sad" occurs at index 0 and 6. The first occurrence is at index 0, so we return 0.
Example 2:
Input: haystack = "leetcode", needle = "leeto" Output: -1 Explanation: "leeto" did not occur in "leetcode", so we return -1.
Constraints:
1 <= haystack.length, needle.length <= 104haystackandneedleconsist of only lowercase English characters.