假设我有string str = "aabaa"
它的非重复子串是
答案 0 :(得分:3)
计算suffix array及其最长公共前缀数组。
a
1
aa
2
aabaa
1
abaa
0
baa
返回(n+1)n/2
,子串边界的数量减去最长公共前缀数组的总和。
(5+1)5/2 - (1+2+1+0) = 15 - 4 = 11.
答案 1 :(得分:1)
这个特殊的问题在许多比赛中被提出并且可以以不同的方式解决,但是在比赛中接受它是时间和空间复杂性的问题。 您可以在以下链接中找到解决方案: Generate all unique substrings for given string
https://www.quora.com/Given-a-string-how-do-I-find-the-number-of-distinct-substrings-of-the-string