diff --git a/problems/0028.实现strStr.md b/problems/0028.实现strStr.md index 4e01926f..2757130c 100644 --- a/problems/0028.实现strStr.md +++ b/problems/0028.实现strStr.md @@ -769,6 +769,36 @@ class Solution: return next ``` +```python +// 前缀表(不减一)Python实现 +class Solution: + def strStr(self, haystack: str, needle: str) -> int: + if len(needle) == 0: + return 0 + next = self.getNext(needle) + j = 0 + for i in range(len(haystack)): + while j >= 1 and haystack[i] != needle[j]: + j = next[j-1] + if haystack[i] == needle[j]: + j += 1 + if j == len(needle): + return i - len(needle) + 1 + return -1 + + def getNext(self, needle): + next = [0] * len(needle) + j = 0 + next[0] = j + for i in range(1, len(needle)): + while j >= 1 and needle[i] != needle[j]: + j = next[j-1] + if needle[i] == needle[j]: + j += 1 + next[i] = j + return next +``` + Go: ```go @@ -1352,3 +1382,4 @@ impl Solution { +