问题描述:给定一个字符串,寻找这个字符串的最长重复子串,如abcdeabc,其最长的重复子串为abc。
这个问题来自别人的博客http://blog.csdn.net/dyoyo90/article/details/12840477
问题1.
产生数组向左平移的过程。如
abc-bc-c
abd-bd-d
最长为2.数据库更快。
问题2.
找到所有的字符串。然后排序。当然也是数据库操作最好。
问题3.
如果确定16个字符最长的话,那么用数组就可以了。
如果大于16的话。就要每次判断大于16,否则抛弃。
2个首字符之间的距离要大于16。
从首字符开始的话比如a,那么对于下一个b作为子字符串开头的话,首先收索到,这个时候就要先处理b开头的字符串。同时记录下个b开头的子字符串中a的位置。如果找到大于16的字符串匹配,那么当前的最大串就要更新。当然对于下个子字符串,从后向前搜索前个字符串是比较符合实际的。
同时找到一些特殊的字符做为组分割是比较合理的。比如a作为分组条件。