Appearance
假设你要在一段很长的文本里找一个模式串(比如在 "ababcabcacbab" 里找 "abcac")。
普通做法是:
从文本某个位置开始,一位一位比
一旦不匹配,就把模式串整体往右挪一位,再从头开始比
问题在于:
明明前面已经比对过、确定相等的字符,又被重复比较了很多次。
KMP 的想法非常聪明:
当匹配失败时,不要回到模式串的开头,而是跳到“可能继续匹配的位置”。