KMP


KMP算法是一种字符串匹配算法,可以在 O(n+m) 的时间复杂度内实现两个字符串的匹配。

主要思想是利用已经匹配上的子串信息跳过不可能成功的匹配起点。

Pasted image 20260313205056

由abcab已经匹配上可以获得一些信息。如何利用这些信息?

已知的这几个文本字符使我们能够立即确定某些偏移是无效的。

我们可以根据前缀/后缀知道更多的信息!

构筑一个longest prefix suffix union length数组 abcab:00012

然后根据它跳过一些重复比较!