KMP 算法通过构建失败函数进行预处理,在匹配过程中根据失败函数跳过不匹配的字符。BM 算法构建后缀表和坏字符表用于预处理,在匹配过程中根据坏字符表和好后缀表跳过不匹配的部分。

KMP 算法与 BM 算法匹配过程
KMP 算法(Knuth-Morris-Pratt)
- 预处理(构建失败函数):计算每个模式字符在模式串中与当前字符不匹配时,匹配的最长后缀前缀长度。
-
匹配过程:
- 将模式串的第一个字符与文本串的当前字符比较。
- 如果匹配,则向前移动模式串和文本串中的字符。
- 如果不匹配,则根据失败函数跳过模式串中一部分不匹配的字符,然后继续比较。
BM 算法(Boyer-Moore)
本文档主要讲述的是Fortran基本用法小结;希望能够给学过C但没有接触过Fortran的同学带去一些帮助。Fortran是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
-
预处理(构建好后缀表和坏字符表):
- 好后缀表:记录模式串尾端匹配的后缀数量。
- 坏字符表:记录模式串中最后一个出现过的字符及其与当前字符不匹配时的位移距离。
-
匹配过程:
- 从文本串结尾开始,比较模式串的最后一个字符与文本串的当前字符。
- 如果匹配,则向前移动模式串和文本串中的字符。
- 如果不匹配,则根据坏字符表跳过模式串中最后一个字符与当前字符不匹配的位移距离。
- 如果坏字符表中没有该字符,则根据好后缀表跳过与模式串结尾匹配的最大长度。









