KMP算法
KMP 算法
KMP 算法用来在一个文本中查找模式串,如下图所示:
文本匹配例子:

我们把上面那个长字符串的称为文本,下面这个短的称为模式串。我们的目的是查看ABADABAD是否出现在文本中。
不必要的比较:

跳过不必要的比较:

KMP 算法的核心作用在于帮助模式串顺利的跳过很多不必要的比较(模式串没有任何前缀与文本匹配),直接后移到一部分前缀已经匹配的位置,开始下一次的比较。更准确的讲是移动到:最长真前后缀匹配的位置,如上图所示的ABA。
KMP 算法用来在一个文本中查找模式串,如下图所示:
文本匹配例子:

我们把上面那个长字符串的称为文本,下面这个短的称为模式串。我们的目的是查看ABADABAD是否出现在文本中。
不必要的比较:

跳过不必要的比较:

KMP 算法的核心作用在于帮助模式串顺利的跳过很多不必要的比较(模式串没有任何前缀与文本匹配),直接后移到一部分前缀已经匹配的位置,开始下一次的比较。更准确的讲是移动到:最长真前后缀匹配的位置,如上图所示的ABA。
这个算法真的很奇妙,它的核心是一个数学证明。外延,或者说应用场景是:
高数中的第一个证明,可能就是这个