摘要:
增强型的模式匹配算法,KMP查找算法VB.NET 2005泛型实现。也不知道用的对不对,但是个人感觉好像是对的。不过做测试的时候发现如果是字符串(字符数组)的匹配,用KMP算法比.NET自己的String.IndexOf还要慢。不知道.NET怎么做的,可能也是KMP算法吧。
和2003版的一样,主函数KMPSearch进行实际的匹配操作。子函数KMPSearchGetNextArray负责计算匹配串每个项目单位对应的权值。只不过加入了(Of T As IComparable(Of T))泛型约束。 阅读全文
摘要:
增强型的模式匹配算法,KMP查找算法。全称是克努特-莫里斯-普拉特算法。是一种在一个串内查找第一个匹配子串位置的算法。之所以是增强型的,是应为它修改普通算法中失配的时候,被查找串的查找起始位置只向后移动一个单位的办法。通过首先分析匹配串的逻辑,给每一个项目位置加入一个权值。这样在失配的时候,就可以根据失配项目单位所对应的权值,顺移多个位置再次匹配。具体的算法可以参考《数据结构》一书。
现在我用VB.NET 2003实现这个算法。主函数KMPSearch进行实际的匹配操作。子函数KMPSearchGetNextArray负责计算匹配串每个项目单位对应的权值。
稍后推出使用VB2005泛型的KMP查找算法。 阅读全文