def multi_comp(s):
le = len(s)
if le==0:
return ''
if len(set(s))==1:
if le>1:
return '{}{}'.format(s[0], le)
return s
for i in range(le//2, 0, -1):
for j in range(le-i):
res = []
ind = j
while ind+2*i<=le:
if s[ind:ind+i]==s[ind+i:ind+2*i]:
res.append(ind)
ind += i
else:
break
if len(res)>0:
if len(set(s[res[0]:res[0]+i]))==1:
ret = '{}{}'.format(s[res[0]],res[-1]+2*i-res[0])
else:
ret = '({}){}'.format(s[res[0]:res[0]+i], len(res)+1)
left = multi_comp(s[:res[0]])
right = multi_comp(s[res[-1]+2*i:])
return left+ret+right
return s
多字符串压缩大概写了一下,没怎么测过,不知道对不对。