求编写Python程序:查找最长非重叠重复子串,多候选取出现次数最多者
需求:查找最长非重叠重复子串的Python程序
需求说明
- 编写Python程序,用于查找最长的非重叠重复子串
- 优先级规则:
- 第一优先级:子串长度最长
- 第二优先级:仅当多个子串长度相同时,选取出现次数最多的;次数相同则可返回任意一个
- 核心限制:子串不允许重叠
- 特殊处理:若不存在出现次数超过1次的子串,返回原字符串
示例
- 若存在一个长度为4、出现2次的子串,以及一个长度为3、出现3次的子串,应返回长度为4的子串
- 若存在两个长度均为4、均出现2次的子串,返回其中任意一个即可
- 若不存在出现次数超过1次的子串,返回原字符串
- 对于字符串
"grhasdfjlksegkasdfdfshlgkjsdngbkj",应返回"asdf",因为它是出现次数最多的最长重复子串
尝试的代码
line = "grhasdfjlksegkasdfdfshlgkjsdngbkj" li = list(line) c = 0 pu = 0 m = {} for s in li: sta = s if pu == 0: css = c oln = line while True: st = sta + li[css+1] print(st) ln = line for i in range(pu): ln = ln[:css+i] + ln[(css+i+1):] if st in ln: pu += 1 css += 1 oln = line sta = st else: m[pu] = sta line = oln break c += 1 else: pu -= 1
内容的提问来源于stack exchange,提问作者Alex DeStefano
相关产品推荐
相关产品推荐

