Find the longest repeating string and the number of times it repeats in a given string

algorithm, c

Solution

You can solve this in linear time by building a suffix tree and taking a path from the root to the deepest internal node; this will give you the longest repeated string. Once you have that string, it's trivial to count the number of times it appears.

Problem

For example, given string "abc fghi bc kl abcd lkm abcdefg", the function should return string "abcd" and the count of 2. A O(n^2) solution seems easy but I am looking for a better solution. Edited: If nothing better than O(n^2) is possible than which approach would be best performance wise.

Original source