FJS字符串搜索算法示例代码
字符串搜索算法可以查找文本中模式字符串的出现,就像文本编辑器的搜索功能一样。 FJS(Franek-Jennings-Smyth)算法是在各种条件下最快的已知字符串搜索算法。 它结合了著名的KMP(Knuth-Morris-Pratt)算法的线性时间最坏情况保证和BMS(Boyer-Moore-Sunday)算法的快速平均情况性能。
样例代码
当前以C和Java提供示例实现。 两种实现都在文本中找到模式字符串的所有匹配项,而不是简单地找到第一个或最后一个。
C/
C实现是您可以自定义以满足特定需求的起点。 请注意,它也是基于8位字符的。 对于较宽的字符,您可能希望采用Java代码演示的简单哈希策略来提高短文本的性能。 另一种选择是将字符串作为8位字符处理,并忽略虚假匹配。 例如,将指向16位字符串的指针转换为字节数组指针,然后忽略以奇数偏移量开头的“匹配”