ali算法笔试编程题

 

2018年9月7号

ali算法笔试编程题_第1张图片

 

思路:首先进行数据的预处理部分,将歌手、歌曲、演员分别分离出来保存到列表aalist里面。再进行一次排序,排序可以保证先匹配“周杰伦”,当不能匹配时再去匹配“周杰”,如此可以将二者分开。之后便可以进行字符串匹配,并做插入字符操作。

输入为:

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

输出为:

请播放 周杰伦/acter,singer 的 七里香/song 给我听

代码如下:

a = raw_input()

b = raw_input()

#a = "singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪"
#b = "请播放周杰伦的七里香给我听"

alist = []
i = 0
j = 0
while i  < len(a):#将歌手、歌曲、演员分别分离出来保存到alist里面。
    if a[i] == ';':
        alist.append(a[j:i])
        j = i+1
    i = i + 1
alist.append(a[j:])
alist[0] = alist[0].replace('singer_','')#歌手
alist[1] = alist[1].replace('song_','')#歌曲
alist[2] = alist[2].replace('actor_','')#演员
#print(alist)

aalist=[]
for c in alist:
    #print(c)
    ssa = []
    i = j = 0
    while i < len(c):
        if c[i] == '|':
            ssa.append(c[j:i])
            j = i + 1
        i = i + 1
    ssa.append(c[j:])
    aalist.append(ssa)
print(aalist)
#myList1 = sorted(myList,key = lambda i:len(i),reverse=True)
aalist[0] = sorted(aalist[0],key=lambda i:len(i),reverse=True)#排序可以保证先匹配“周杰伦”,当不能匹配时再去匹配“周杰”,如此可以将二者分开。
#print(aalist)
i = 0
#count = 0
while i 

你可能感兴趣的:(程序员)