28. 实现 strStr()
class Solution:
def getNext(self,next,s):
j = -1
next[0] = j
for i in range(1,len(s)):#错误少+1
while j>=0 and s[j+1]!=s[i] : #缺少j>=从0开始比较
j = next[j]
if s[j+1] == s[i]:
j+=1
next[i] = j
def strStr(self, haystack: str, needle: str) -> int:
if not needle:
return 0
next = [0]*len(needle)
self.getNext(next,needle)
j = -1
for i in range(len(haystack)):
while j>=0 and needle[j+1]!=haystack[i]:#j>=0因为两列表两指针一一比较
j = next[j]
if needle[j+1] == haystack[i]:
j+=1
if j==len(needle)-1:
return i-len(needle)+1
return -1
对临界值没有把握好
459.重复的子字符串
坚持!
坚持!
坚持就是胜利!!!