传统做法:不匹配后 从长串下一个字符开始 短串要从头开始匹配
如果提前求出 短串每个前缀的 最长的公共前缀和后缀 就不用从头开始匹配了
定义next[i]:以i结尾的后缀
next[i]=j
p[1,j]=p[i-j+1,i]
// 从1开始长度为j的前缀 = 以i结尾 长度为j的后缀
假设长串下标为i,短串下标为j
短串当前位置j失配后 跳到next[j]位置 然后从
传统做法:不匹配后 从长串下一个字符开始 短串要从头开始匹配
如果提前求出 短串每个前缀的 最长的公共前缀和后缀 就不用从头开始匹配了
定义next[i]:以i结尾的后缀
next[i]=j
p[1,j]=p[i-j+1,i]
// 从1开始长度为j的前缀 = 以i结尾 长度为j的后缀
假设长串下标为i,短串下标为j
短串当前位置j失配后 跳到next[j]位置 然后从