学习记录@代码随想录day9:字符串part02

文章讲述了如何实现strStr()函数,用快慢指针方法解决字符串查找问题,但遇到困难,计划学习KMP算法来优化。作者提到KMP能利用已匹配信息避免重复匹配。
摘要由CSDN通过智能技术生成

学习记录@代码随想录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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值