携程笔试第一题,区间划分

相同字母必须在同一区间,找出区间数最多划分方法,依次输出其长度

例:输入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)
#携程##笔试题目##题解#
全部评论
跟美团笔试送外卖一个题😂
点赞 回复 分享
发布于 2019-09-05 17:52
用一个栈吧
点赞 回复 分享
发布于 2019-09-05 17:51

相关推荐

点赞 评论 收藏
分享
05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
评论
1
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务