求字符串中最长重复子串(两个子串不重复,务必分开。)

求字符串中最长重复子串(两个子串不重复,必须分开。)
从文本读一个字符串(长度可以为百万,千万级别),从中找出最长的重复子串。其中,各个子串必须没有交叉的地方。考虑空间时间复杂度。我的方法时间复杂度太高,不适合这么大的长度,哪位大神教一个方法,解决这个问题?
------解决方案--------------------
后缀数组,后缀树肿么样~
------解决方案--------------------
后缀数组。
参考下 编程珠玑 的p156页。字符串那一章
------解决方案--------------------
不交叉的话,那先把后缀树做出来。每个节点多记录两个值,该节点最先出现的后缀和最后出现的后缀。然后遍历所有的后缀树节点,取min(最后出现-最先出现, 该后缀树节点表示的前缀长度)最大的。