查找由最大数量的其他字符串组成的字符串

时间:2013-12-05 18:40:16

标签: string performance algorithm language-agnostic

给定一个字符串数组,找到由最大数量的其他字符串组成的字符串 包含在同一个数组中的字符串。

> e.g. “rat”, ”cat”, “abc”, “xyz”, “abcxyz”, “ratcatabc”, “xyzcatratabc”
> 
> Answer: “xyzcatratabc”
> 
> “abcxyz” contains 2 other strings,
> 
> “ratcatabc” contains 3 other strings,
> 
> “xyzcatratabc” contains 4 other strings

我已经提出了一个使用DP的O(n *(Avgg_length_of_string ^ 2))解决方案。

在字符串的每个可能的子字符串中弥补可能的中断,并检查最大性回忆将为我们提供所需的复杂性。

还有其他最佳(时间限制)方法来解决此问题。

1 个答案:

答案 0 :(得分:1)

Aho-Corasick algorithm需要O(m)来创建树,其中m是所有字符串的总长度。搜索每个字符串需要O(n + z),其中n是字符串的长度,z是找到的匹配数。所以看起来你可以在O((2 * total_string_length) + number_of_matches)中完成。

但是,它需要为树提供额外的O(m)内存。