s = 'aabcbcbcdddbcbcbcbc'
def maximum_count(s,length,dic):
#搜索s中长为length的子串,将有连续重复的子串加入dic中,key为重复的字符串。val为重复的次数
#在重复的子串“bc“断掉连续性后,重新计数
#len=2
n = len(s)
for i in range(0,n-length+1):
comparestr = s[i:i+length]
start = i+length
end = i+2*length
count = 1
while end <= n and s[start:end] == comparestr: #end is not inclusive, so can be n
count +=1
start +=length
end +=length
if count>1:
if comparestr not in dic:
dic[comparestr] = count
else:
if count>dic[comparestr]:
dic[comparestr] = count
#print(dic)
def maximum(s):
#找出所有长度里的情况,按题目要求先找次数最多的,次数相同找长度最大的。次数长度都相同按字母排序
dic = {}
n = len(s)
for length in range(1,n+1):
maximum_count(s,length,dic)
print(dic)
maximum(s)
s = 'aabcbcbcdddbcbcbcbc' dic output: {'a': 2, 'd': 3, 'bc': 4, 'cb': 3, 'bcbc': 2}
算法:搜索s中长为length的子串,将有连续重复的子串加入dic中,key为重复的字符串。val为重复的次数. 重复的子串,如“bc“断掉连续性后,重新计数