kmp算法原理自我理解
用途
用于子串的匹配问题
子串匹配
描述
串A中是否包含串B
解法
-
暴力匹配
- 从头一个个比较,直到B的末尾。复杂度 O(mn)
-
kmp
-
构建next数组,前缀匹配后缀的长度。
-
在匹配失败的时候根据next[i]的值进行跳跃式前进。
-
为什么要使用next进行前缀匹配后缀?
红色a之前的绿色字符串abab是匹配成功的,假如说按照暴力法来解题,过程如下,实际上暴力解法的过程就是一个最长前缀和后缀匹配的过程,kmp只是进行了预处理,计算出最终位置而已,从而节省大量的无用的匹配过程。
-