携程笔试第一题,区间划分
相同字母必须在同一区间,找出区间数最多划分方法,依次输出其长度
例:输入ababccffd,划分方法/abab/cc/ff/d/,输出4,2,2,1 输入ababacdc,划分方法/ababa/cdc/,输出5,3 输入ababggcca,划分方法/ababggcca/,输出9 输入ababsaghghdccrjr,划分方法/ababsa/ghgh/d/cc/rjr/,输出6,4,1,2,3
def calc(s): n = len(s) i = 0 res = [] while i<n: j = i tmp = s[i] idx = s.find(tmp) while s.find(tmp,i+1)>0: i = s.find(tmp,i+1) k=j+1 while k<i: tmp_k = k while tmp_k>0: i = max(s.find(s[k], tmp_k+1), i) tmp_k = s.find(s[k],tmp_k+1) k+=1 if i>=n: break res.append(i-j+1) i+=1 return res s = 'ababsaghghdccrjr' res = calc(s) print(res)