代码随想录算法训练营第九天 | KMP算法学习,28. 实现 strStr(),459.重复的子字符串 [字符串篇]

文章讲述了KMP算法的前言、由来和作用,强调了在字符串匹配中的高效性,以及通过LeetCode实例理解算法的过程。作者提到KMP算法的理解需要不断积累和复习,特别是对于LeetCode28和459题,目前还没完全掌握。
摘要由CSDN通过智能技术生成

KMP算法

前言

KMP算法应该是我这些天来接解到的真正的算法题,今天视频和讲解文章看了两遍,算是对这个算法有了初步的认识,不得不佩服那些能研究出算法的学者们,想必他们的数学推理逻辑功底何其强大,才能从这具体的世界中抽象出那样像真理般的规律。
知识就像一张网,不是二维平面中的网,更像三维空间的网状结构。我们初步学习只是从一个点切入进去了,往往理解地不是很深刻。有些知识你觉得你已经掌握了,但放上几周或者几个月,再次学习时,会有更深刻的理解与感悟,这也就是有些题目,明明已经理解了,但是稍微换一下条件,你的思路又开始有点儿茫然了。
今天的试题,说实话,对于现在的我来说还是挺难的,那些公式我得拿着用例推导半天,主要还是积累的不够多,理解起来有点儿吃力。
KMP算法的理论知识可以看下B站卡哥的讲解,非常精彩。
后面我陆续更新一下我对KMP的理解

KMP的由来

KMP不是专业单词的缩写,而是三位学者名字的首字母,这三位学者分别是:Knuth,Morris和Pratt。

KMP作用

KMP主要是用来匹配字符串,提高效率。其主要思想就是当字符串匹配失败时,不需要从头开始重新匹配,而是从先前匹配成功过的字符开始匹配。
KMP算法中的核心就是前缀表。

前缀表

前缀表是用来回退匹配索引值的,它记录了当匹配失败时,模式串接下来应该从哪里开始重新匹配(用模式串匹配文本串)。
前缀表记录了下标索引i之前的字符串中有多大长度的相同前缀后缀。

待补充…

LeetCode 28. 实现 strStr()

题目链接:344. 反转字符串
文章讲解:代码随想录#344. 反转字符串

思路

重点还是得理解KMP算法,这道题二刷时补上。

LeetCode 459.重复的子字符串

题目链接:459.重复的子字符串
文章讲解:代码随想录#459.重复的子字符串

思路

这道题也一样,放到以后二刷时再做,现在不太会做,还没有完全吃透KMP算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值