#!/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))

仅返回最先遇到的最大重叠子串:

 

若无最大重叠子串:

 

 

posted on 2018-03-18 22:07  SHQHDMR  阅读(576)  评论(0编辑  收藏  举报