美文网首页数据结构与算法
数据结构第二季 Day24 串(蛮力、KMP)

数据结构第二季 Day24 串(蛮力、KMP)

作者: 望穿秋水小作坊 | 来源:发表于2021-11-05 16:16 被阅读0次

一、蛮力算法

1、什么是串?什么是前缀、真前缀、后缀、真后缀?

  • 串:由若干个字符组成的有限序列。
image.png

2、查找一个模式串(Pattern)在文本串(Text)中的位置,有几种经典算法?(至少说 2 种吧)

  • 蛮力算法
  • KMP
image.png

3、什么是蛮力算法(Brute Force)?一句话简述?

  • 以字符为单位,从左到右移动模式串,直到匹配成功
image.png

4、蛮力算法 01 的思路和实现

image.png image.png

5、蛮力算法 02 的思路和实现

image.png image.png

6、蛮力算法的时间复杂度如何?

  • 平均时间复杂度 O(mn)
image.png

二、KMP

1、蛮力 VS KMP?先掌握 KMP 的总体思路方向很重要!

image.png
  • 对比蛮力算法,KMP 的精妙之处:充分利用了此前比较过的内容,可以很聪明的跳过一些不必要的比较位置。

2、KMP - next 表的使用

  • KMP 会预先根据模式串的内容生成一张 next 表(一般是个数组)
image.png image.png

3、KMP 的核心原理(感觉有点说复杂了,后面再看吧)

image.png

4、KMP - 真前缀真后缀的最大公共子串长度?

image.png

5、KMP - 从最大公共子串表获得 next 表?

image.png

6、KMP - 主算法实现

image.png

7、KMP - 为什么是 “最大” 公共子串长度?

  • 把下图理解了,基本就理解 KMP 了吧
image.png

8、KMP - next 表的构建思路?

image.png image.png

9、next 表的不足之处?

image.png

10、next 表的优化思路?

image.png image.png image.png

11、KMP - 性能分析?

image.png

12、蛮力 VS KMP

image.png

三、其他串算法

1、BM 算法

image.png image.png image.png image.png image.png

2、RK 算法

image.png

3、Sunday 算法

image.png

4、总结:这些算法都干了些什么事情?

  • 尽可能跳过不必要的比较

相关文章

  • 数据结构第二季 Day24 串(蛮力、KMP)

    一、蛮力算法 1、什么是串?什么是前缀、真前缀、后缀、真后缀? 串:由若干个字符组成的有限序列。 2、查找一个模式...

  • 数据结构与算法---KMP算法

    KMP算法是数据结构与算法中串的经典算法案例,KMP是由三位学者同时发现(D.E.Knuth,J.H.Morris...

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • 数据结构 第8讲 KMP算法

    数据结构 第8讲 KMP算法 讲这个算法之前,我们首先了解几个概念: 串:又称字符串,是由零个或多个字符组成的有限...

  • KMP算法——寻找子串位置

    KMP算法——寻找子串位置 1、KMP算法简介: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J....

  • KMP字符串匹配

    KMP字符串匹配

  • 09--KMP

    [toc] KMP算法原理 KMP思想 假设字符串abcdefgab和模式串abcdex,进行匹配,当匹配到x位置...

  • KMP算法及优化

    转载请注明出处: KMP算法及优化 今天看到同学在复习数据结构书上的KMP算法,忽然发觉自己又把KMP算法忘掉了,...

  • KMP字符串匹配算法

    为什么要写KMP字符串匹配算法呢?因为近段时间在补数据结构和算法,然后重拾大学的《大话数据结构》,记录一下学习的进...

  • 字符串匹配KMP算法

    假设我们的字符串母串是,子串是,我们想找到子串在母串中出现的位置并统计总的出现次数,可以使用KMP算法。KMP算法...

网友评论

    本文标题:数据结构第二季 Day24 串(蛮力、KMP)

    本文链接:https://www.haomeiwen.com/subject/nntkzltx.html