KMP算法
KMP
- KMP算法用来在文本串中匹配模式串,查找模式串出现的位置。
- KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。
- 需要用到next数组,即前缀表。前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。
- 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串。
- 后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串。
- 前缀表:记录下标i之前(包括i)的字符串中,子串(s[0]至s[i])有多大
长度
的相同长度的前缀、后缀。
计算前缀表
1 |
|
字符串匹配
1 |
|
参考内容
KMP算法
http://example.com/2022/07/23/KMP算法/