携程9.4 NLP算法

由该c++版本改成python版
题目:某车站为了方便管理,决定根据目的地以及出发时间的不同对车辆时刻表进行分组管理。

要求:给定一个时刻表,同一个目的地的车辆必须分配在同一组内,分组不能打乱时刻
表的车次顺序,即各个分组之间出发时间有序。请对时刻表尽可能多的分组,按出发时间早晚作为输出顺序。

输入:时刻表内容:aabbcddc,a,b,c,d为目的地,字母出现的先后顺序为出发时间的先后顺序

输出:输出各个分组的长度,以空格相隔,输出顺序与时刻表的出发顺序一致

样例输入
aabbcddc
样例输出
2,2,4

提示:aabbcddc 可分为aa,bb,cddc三组,目的地相同的车辆分配在了一组,同时,aa分组出发时间早于bb分组,bb分组早于cddc分组,所以输出结果为2,2,4。若分为一组,aabbcddc,则不满足题目中尽可能多的分组这一要求。输入不为空

#设置字典记录字符串内字母出现的最后位置
def classify(s):
    if len(s) == 0:
        return None
    if len(s) == 1:
        return 1
    dict = {}
    end = 0
    Li = []
    start = 0
    for i in range(len(s)):
        dict[s[i]] = i
    while(start < len(s)):
        index = s[start]
        end = dict[index]
        j = start
        while(j<=end):
            if dict[s[j]] > end:
                end = dict[s[j]]
            j+=1
        Li.append((end-start+1))
        start = end
        start += 1
    return Li
#test
print(classify('gefhfdjbfgghpp'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值