文件中不存在的最小长度的子字符串

时间:2015-01-24 02:05:40

标签: string algorithm

我被困在这个采访问题上: 给定一个N字节的文件。找到文件中不存在的最小长度的子字符串。

有什么想法吗? 感谢。

2 个答案:

答案 0 :(得分:3)

后缀树宝贝!

创建后缀树。找到最浅的空节点。

答案 1 :(得分:2)

你可以建立一个后缀数组,然后对于k = 1,2,3,...,搜索长度为k的每个可能的子串。

由于后缀数组已排序,因此您可以轻松找到缺少的子字符串。例如,当k = 2时,您首先找到" aa",然后" ab"等等。

由于缺少最小子字符串的长度最多为O(log(n)),因此构建后缀数组为O(n),每次扫描为O(n),这总体为O(n log n)。