先使用Hash,由于字符有256个,可以创建256个大小的数组,放入数组中,记录每个值出现的坐标,此时从第一个hash开始,先判断该hash值是否大于1,如果不大于1则跳过,因为不会重复,如果大于1则肯定至少有一个自己,输出(或者放入set中)然后根据该值的坐标找到下一个值,如果下一个值在hash中的大小也大于1并且这个值的坐标比该值的坐标大于1,则修改该值为下一个值,并找出下一个的下一个值是否也满足(大于1并且这个值的坐标比该值的坐标大于1)此时找到的最长的链中可能存在重复子串(如果此时最长链中只有这一条或者下面第二个链中与这一条没有重复或者连续则查找失败),然后再从第一个值的第二次出现的坐标依次往下找到第二个链,求最长公共子串,然后从第二个相同的开始截取,即可找出所有这些链的重复子串,依次对其中hash值出现次数大于1的串进行上述操作。。。。
点赞 评论

相关推荐

牛客网
牛客企业服务