0

我想解决以下算法问题。给定一组字符串 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”、“BA”、“BC”、“ABC”。因此最短的字符串是“BABC”。它包含一个 n-gram,它并不存在于所有输入字符串中,即“BABC”,但这没关系。

结果字符串我称为 n-gram 提取器,因为通过遍历结果的所有 n-gram,您可以获得所有 n-gram,它们存在于所有输入字符串中。

如果这是一个已知问题,我很乐意知道它的名称。(是:我以为我有一个解决方案的想法,但结果我没有)。

对于输入,可以安全地假设字母大小的平方 (n^2) 小于最短字符串的长度。

4

0 回答 0