摘要: 1. 简述 KMP是经典的笔试题目之一。昨天复习了一下,主要有一下几点需要注意。 首先,原理上,利用最长的相等前端距离和后端距离(详见C语言名题精选百则6.4节)。其次,有两类代码,一类实现fail函数,另一类实现next函数。· fail数组的含义是,当前元素匹配失败了,那么[开始元素,当前元素]范围内,最长前端的下标。假设最长相等前端后端分别为pat[0]-pat[s],pat[i-s]-pat[i], fail[i]=s。很多情况下,没有最长前端,所以可能有很多-1出现(没有的时候,用-1代替)。在kmp主函数中,如果text[t]!=pat[p],那么p=fail[p-1]+ 阅读全文
posted @ 2011-08-15 11:34 xiaodongrush 阅读(1053) 评论(3) 推荐(1) 编辑