字符串的模式匹配算法
Brute Force 算法:有两个字符串S和T,长度为N和M,首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不相等,则T往右移动一个字符的位置,再依次进行比较。最坏的情况是进行M*(N-M+1)次比较,时间复杂度是O(M*N)
KMP算法:改进BruteForce算法,每当进行一次匹配过程中,不需要回溯i指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。
这个“滑动”距离取决于一个next数组,next数组决定了模式匹配串下次移动的距离。