Reputation: 2942
For a given string S
of length n
-
Optimal algorithm for finding all unique substrings of S
can't be less than O(n^2)
. So, the best algorithm will give us the complexity of O(n^2)
. As per what I have read, this can be implemented by creating suffix tree for S
.
The suffix tree for S can be created in O(n)
time. Now, my question is-
How can we use the suffix tree for S to get all the unique substrings of S
in O(n^2)
?
Upvotes: 1
Views: 2046
Reputation: 2942
It can be done optimally through tries. Add the strings to trie and traverse from root to node. Each root to node path will denote suffixes of a string. Take all the prefixes of these suffixes. These are the unique substrings.
Upvotes: 1
Reputation: 3261
Try to read about suffix arrays: http://en.wikipedia.org/wiki/Suffix_array This method is faster than suffix tree for getting substrings in string.
Upvotes: 2