高速在一个字符串中查找子串。时间复杂度只需要 O(n)。n 是字符串的长度。
next[i] = j 的含义:在模式串 p 中,以 i 结尾的,满足最长前缀和后缀关系,前缀的最后一个位置为 j。即 P[1 ~ j] = P[i - j + 1, i] 相等。
s 串和 p 串都从下标 1 开始存。
模式串中的指针不用每次匹配失败时都退到 0。
1 |
|
高速在一个字符串中查找子串。时间复杂度只需要 O(n)。n 是字符串的长度。
next[i] = j 的含义:在模式串 p 中,以 i 结尾的,满足最长前缀和后缀关系,前缀的最后一个位置为 j。即 P[1 ~ j] = P[i - j + 1, i] 相等。
s 串和 p 串都从下标 1 开始存。
模式串中的指针不用每次匹配失败时都退到 0。
1 |
|