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

本文详细解析了一段Python代码的功能,该代码用于处理特定格式的输入字符串,通过查找并标记字符串中特定词汇及其对应的类别。文章揭示了代码中存在的问题,即在输出结果时未对标签进行字典顺序排序,导致部分测试案例未能通过。通过对代码的深入分析,作者提供了改进方案,强调了排序在数据处理中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值