标签: algorithm suffix-tree
我需要在O(n)中设计一个给定长度为n的字符串t的算法,计算t的不同子串的数量。
答案 0 :(得分:0)
为输入字符串构建后缀自动机。
查找maxLength[v] - maxLength[suffixLink[v]] for all states v的总和,其中maxLength[v]是从根到v状态的最长路径,suffixLink[v]是此状态的后缀链接
maxLength[v] - maxLength[suffixLink[v]] for all states v
maxLength[v]
v
suffixLink[v]
在线性时间内构造后缀自动机是一个众所周知的问题。第二部分只是一个简单的遍历。因此,总时间复杂度为O(n)。
O(n)