Given a string of length n of lowercase alphabet characters, we need to count total number of distinct substrings of this string.
Input : str = “ababa” Output : 10 Total number of distinct substring are 10, which are, "", "a", "b", "ab", "ba", "aba", "bab", "abab", "baba" and "ababa"
The idea is create a Trie of all suffixes of given string. Once the Trie is constricted, our answer is total number of nodes in the constructed Trie. For example below diagram represent Trie of all suffixes for “ababa”. Total number of nodes is 10 which is our answer.
How does this work?
- Each root to node path of a Trie represents a prefix of words present in Trie. Here we words are suffixes. So each node represents a prefix of suffixes.
- Every substring of a string “str” is a prefix of a suffix of “str”.
Below is implementation based on above idea.
Count of distinct substrings is 10
This article is contributed by Utkarsh Trivedi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Count of distinct substrings of a string using Suffix Array
- Overview of Data Structures | Set 3 (Graph, Trie, Segment Tree and Suffix Tree)
- Find distinct characters in distinct substrings of a string
- Suffix Tree Application 4 - Build Linear Time Suffix Array
- Count distinct substrings of a string using Rabin Karp algorithm
- Count of Distinct Substrings occurring consecutively in a given String
- Queries for number of distinct integers in Suffix
- Count number of substrings with exactly k distinct characters
- Count distinct substrings that contain some characters at most k times
- Count number of distinct substrings of a given length
- Count of substrings of length K with exactly K distinct characters
- Count of substrings having all distinct characters
- Count of Substrings with at least K pairwise Distinct Characters having same Frequency
- Count inversions in an array | Set 4 ( Using Trie )
- Count the number of words with given prefix using Trie
- Generate a String of having N*N distinct non-palindromic Substrings
- Minimum changes to a string to make all substrings distinct
- Count ways to split a Binary String into three substrings having equal count of zeros
- Longest palindromic string formed by concatenation of prefix and suffix of a string
- Print the longest prefix of the given string which is also the suffix of the same string
Improved By : Rajput-Ji