学习记录@代码随想录day9:字符串part02
28. 实现 strStr()
'''
给你两个字符串 haystack 和 needle
请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。
如果 needle 不是 haystack 的一部分,则返回 -1 。
输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。
'''
自己写了下,用了快慢指针方法,但是存在问题,时间有限,先看讲解,以后来改改,今天项目出问题了o(╥﹏╥)o
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
haystack_list=list(haystack)
needle_list=list(needle)
low=0
fast=1
while low<len(haystack_list):
print(haystack_list[low],needle_list[0])
if haystack_list[low]==needle_list[0]:
j=1
while j<len(needle_list):
print('*****',haystack_list[fast],needle_list[j])
if haystack_list[fast]==needle_list[j]:
j+=1
fast+=1
else:
low+=1
break
return low
else:
low+=1
return -1
KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。
今天看下前几天的博客吧。
太难了,暂时跳过o(╥﹏╥)o