凑个字数
这篇分析了Kmp中next数组到底是用来干什么的。文章假定大家已经对字符串匹配算法具有初步了解。但是对kmp中的next不是很懂。如果想要研究更多。可以出门左转https://blog.csdn.net/qq_41105401/article/details/79827356这篇写的很详细。
补充个难点
为什么可以不考虑不是后缀的但跟开头能匹配的内容
学过kmp都知道,下面这个串。
目标串S:abdabab
xqweqwer
模式串T:abdabab
y
应该移动到如下
abdabab
xqweqwer
11111abdabab
y
而不是
abdabab
xqweqwer
111abdabab
y
我们发现中间那个小老弟ab
虽然跟前后缀一样但是移过去后发现它是个错误的位置。这是因为目标串中间的ab到末尾是abab,但模式串开头是abda,所以移动过去后发现它俩配不上,换言之,如果中间的ab是正确的位置,的充要条件就是中间中间的ab
到结尾应该等于模式串的开头。而这句话你在品品,ab到结尾是个啥,可不就是后缀吗。所以说这就证明了,如果奇迹