我们需要找到text_1
中未出现的text_2
的最短子字符串。如何在O(|text_1|+|text_2|)
时间内使用后缀和LCP数组来解决这个问题?
UPD:
我知道如何使用后缀树来解决它。问题是如何单独使用Suffix array和LCP array解决问题(没有其他辅助数据结构)。
首先,我们需要构建字符串text_1$text_2#
的通用后缀数组和lcp数组。然后我们必须执行LCP阵列的线性扫描,找到text_1
唯一的最短子串的起始位置和长度。
问题是我们在LCP arrray的线性扫描期间需要做什么,以确定唯一替代的起始位置(使用后缀数组)和长度(使用LCP数组)。
答案 0 :(得分:0)
我将尝试解释如何通过我开发的方法解决此问题。
在每个将存储它为end_node或的Node中添加一个变量 不。到结束节点,我的意思是在后缀树中没有任何子节点。
添加一个变量,该变量将存储由text1或text2生成的变量。为了这, 您可以使用要迭代的变量的值 在树的创建过程中为text_1 $ text_2#。
现在,方法很简单,假设您在某个节点上。