阿里笔试编程 请播放周杰伦七里香给我听180907

Python代码


标签输出时没按字典顺序只AC了40%,考完才想起来忘了排序,哭~
在网上看到了其他人的截图,补充一下题目
这里写图片描述

#输入范例:
# singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪
# 请播放周杰伦的七里香给我听

# 输出范例:
# 请播放 周杰伦/actor,singer 的 七里香/song 给我听

import sys
def fine_end(word_dict, line, i):
    for j in range(i,len(line))[::-1]:
        if word_dict.get(line[i:j], [])!=[]:
            return j
    return -1

if __name__ == '__main__':
    # n = raw_input().strip().split(';')
    n = 'singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪'.split(';')
    word_dict = {}
    put = ''
    for i in n:
        key = i.split('_')[0]
        for j in i.split('_')[1].split('|'):
            if word_dict.get(j, []) == []:
                word_dict[j] = [key]
            else:
                word_dict[j].append(key)
    #line = raw_input().strip()
    line = '请播放周杰伦七里香给我听'
    i = 0
    print(word_dict)
    while i < len(line):
        e = fine_end(word_dict, line, i)
        if e!=-1:
            put += ' ' + line[i:e] + '/' +','.join(sorted(word_dict[line[i:e]])) + ' '#败在这个sorted上了,泪
            i = e
        else:
            put += line[i]
            i += 1
    put = put.split()
    put = ' '.join(put)
    sys.stdout.write(put)

看完点个赞、留个言 再走吧~ 你的点赞、留言是对我最大的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值