【发布时间】:2015-02-09 09:47:58
【问题描述】:
MEM是“Maximum Exact Matching”问题的缩写,该问题的目的是找到两个输入字符串之间的所有最大相似子串。请注意,这个问题与字符串匹配问题(或文本搜索)有点不同,您想在另一个文本中找到给定的字符串。
例如,在以下两个字符串中(具有有限字符 {1,2,3}),MEM 是“12”和“3312”
str1:"12233312"
str2:"123312"
例如 233 也是两个输入字符串之间的公共子字符串,但由于还有另一个更大的子字符串包含它,我们不将其视为 MEM。
有没有人有一些优雅的想法如何解决它。一个非常简单的想法可以是使用搜索算法来查找大字符串中较小字符串的所有可能子字符串,并使用一些快速字符串搜索算法,如 Boyer–Moore。但这似乎不是解决这个问题的有效方法。
【问题讨论】:
-
这不就是最长公共子串“问题”吗? en.wikipedia.org/wiki/Longest_common_substring_problem
-
我不仅要寻找一个共同的最大子串,还要寻找所有可能的共同最大子串。但也许我可以使用这个想法
-
233 不包含在更大的公共子字符串中。
标签: string algorithm search pattern-matching