


You are given a string 'S' and you need to return the length of the longest duplicate substring in the given string. The occurrence of duplicate sub-strings can overlap also.
If there are many longest duplicate sub-string return any of them.
The first line of input contains an integer ‘T’ denoting the number of test cases.
The next ‘T’ lines represent the ‘T’ test cases.
The first and only line of the test case contains a single string 'S'.
Output format :
For each test case, print a single line containing a single integer denoting the length of the longest possible duplicate substrings.
The output of each test case will be printed in a separate line.
Note:
You do not need to print anything; it has already been taken care of. Just implement the given function.
1 <= T <= 50
1 <= length of string <= 200
Time limit: 1 sec.
2
aaaab
abcde
3
0
In the first case, 'aaa' is the longest substring which has two occurrences, the first one starting at index '1' and the second one starting at index '2'(0 - based indexing).
In the second case, there is no substring that appears more than once. Thus answer is 0.
2
abcdea
aabbccaa
1
2
Find all the possiible substrings.
The key idea is to find all possible substrings and keep the count of all substrings and return the length longest substring which appears more than once.
Algorithm:
O(N ^ 3), where ‘N’ is the length of the string.
There are a total N ^ 2 substrings and increasing the count of each substring takes O(N) time.
Thus time complexity is O(N ^ 3).
O(N ^ 2), Where N is the length of the string.
We are storing each substring and there are a total of N ^ 2 substrings. Thus space complexity will be O(N ^ 2).