我想解决以下算法问题。给定一组字符串s1,s2,...,sn。我想找到一个字符串s_e,它包含所有输入字符串中存在的所有n-gram。
考虑一个包含以下三个字符串的示例:
ABABC
BABCA
ABCBA
n-gram是(我标记至少一个带星号的字符串中缺少的n-gram):
A B C
AB BA BC CA* CB*
ABA* BAB* ABC BCA* BCB* CBA*
ABAB* BABC* ABCA* ABCB* BCBA*
ABABC* BABCA* ABCBA*
所以解决方案应该包含n-gram:" A"," B"," C"," AB",&# 34; BA"," BC"," ABC"。因此,最短的字符串是" BABC"。它包含一个n-gram,它并不存在于所有输入字符串中,即" BABC",但那没关系。
结果字符串我称为n-gram提取器,因为通过迭代结果的所有n-gram,你可以得到所有n-gram,它们存在于所有输入字符串中。
如果这是一个已知问题,我很乐意知道它的名称。 (是:我以为我有一个解决方案的想法,但事实证明我不是。)
对于输入,可以安全地假设字母大小的平方(n ^ 2)小于最短字符串的长度。