我需要编写一个算法,用于查找最长的两个模式前缀/后缀匹配,时间复杂度为O(n+m1+m2),其中n为字符串长度,m1和m2分别为pattern1和pattern2的长度。
例如:如果字符串是“OBANTAO”,Pattern1是“BANANA”,Patten2是“SIESTA”,那么答案就是字符串“BANTA”的子串,它由BANANA的前缀BAN和SIESTA的后缀TA组成。
Google搜索结果包括:“Rabin-karp字符串搜索算法”、“Knuth-morris-pratt算法”和“Boyer-moore字符串搜索算法”。
我能够理解以上三个算法,但问题在于,它们都是基于“单个模式前缀/后缀匹配”的。我无法将它们扩展为两个模式前缀/后缀匹配。
提供一个示例算法或搜索链接对我开发程序将非常有帮助。
例如:如果字符串是“OBANTAO”,Pattern1是“BANANA”,Patten2是“SIESTA”,那么答案就是字符串“BANTA”的子串,它由BANANA的前缀BAN和SIESTA的后缀TA组成。
Google搜索结果包括:“Rabin-karp字符串搜索算法”、“Knuth-morris-pratt算法”和“Boyer-moore字符串搜索算法”。
我能够理解以上三个算法,但问题在于,它们都是基于“单个模式前缀/后缀匹配”的。我无法将它们扩展为两个模式前缀/后缀匹配。
提供一个示例算法或搜索链接对我开发程序将非常有帮助。
(Pattern 1的前缀) + (pattern 2的后缀)
吗?那么你真正想要的是由p1 + s2
组成的最长子字符串吗?你确实需要更好地说明你的问题。 - Jim Mischel