我需要为最长的两个模式前缀/后缀匹配编写算法,其时间复杂度为 O(n+m1+m2),其中 n 是字符串的长度,m1,m2 分别是模式 1 和模式 2 的长度。
示例:如果 String 是“OBANTAO”,Pattern1 是“BANANA”,Patten2 是“SIESTA”,那么答案是 String 的子字符串“BANTA”,由 BANANA 的前缀 BAN 和 SIESTA 的后缀 TA 组成。
来自 Google 的结果是:“Rabin-karp 字符串搜索算法”、“Knuth-morris-pratt 算法”和“Boyer-moore 字符串搜索算法”。
我能够理解上述所有 3 种算法,但问题是,它们都是基于“单一模式前缀/后缀匹配”的。我无法将它们扩展为两个模式前缀/后缀匹配。
一个示例算法或搜索它的链接将对我开发程序有很大帮助。