#!/usr/bin/python #查找最大重叠子串 def FindMaxDup(in_str): str_len = len(in_str) result = '' #逐级扩大搜索长度# level = 1 while level <= str_len/2: start = 0 while start <= str_len-2*level: flag = 1 i = 0 while i < level: if in_str[start+i] != in_str[start+level+i]: #该start点无该level的重叠子串 flag = 0 break i += 1 if flag == 1: #找到该level的重叠子串 #跳出找下个level的重叠子串 result = in_str[start:start+2*level] break else: #从下个start点找该level的重叠子串 start += 1 level += 1 return result in_str = input('Enter the string:') print(FindMaxDup(in_str))
仅返回最先遇到的最大重叠子串:
若无最大重叠子串: