上午
Leetcode算法
1. KMP
概念
-
主要应用
字符串匹配 -
主要思想
根据之前匹配的信息,当发现字符串不匹配时,避免从头开始匹配。 -
什么是前缀表(next数组、prefix)
是用来回退的,当文本串和模式串不匹配时,告诉我们要回退到模式串的哪个位置 -
前缀表里面的值是什么
表示下标i(包括下标i)之前字符串的相等前后缀长度
时间复杂度分析
文本串长度n、模式串长度m
O(m+n)
构造next数组
- 初始化
- 前后缀不相同
- 前后缀相同
j是前缀末尾位置,i是后缀末尾位置
使用next数组
如何判断文本串里出现了模式串:
j指向模式串末尾