9月7号2019阿里机器学习算法---校招第一题

2019阿里校招第一题9月7号

KMP ababcabcabd和abcabd匹配次数

 

1-1000不能被2、3、5整除的个数

编程题一
只需开口说话就能控制计算机做自己想做的事情,这种新奇的人机交互方式已经从科幻小说进入了现实世界。那么机器是如何理解人说的话的呢?这是一个复杂的过程,其中一个重要的任务就是要教会机器理解话语中的重点,即关键词。比如对机器说“请播放周杰伦的青花瓷”,机器要能理解 “周杰伦”是一个歌手,而“青花瓷”是一首歌曲。而我们知道,“周杰”也是一个歌手,那机器如何抉择呢?为了简化问题,我们使用从左到右的最大长度匹配的原则:在本句里面,“周杰”的字符串长度比“周杰伦”小,所以识别“周杰伦“作为歌手。 通过互联网,我们能收集到一个庞大的知识库,帮助我们教机器来做这件事情。知识库中有所有的歌曲的列表,所有的歌手的列表,以及其他各种实体的列表。那么怎么使用这些实体通过上面的规则来教会机器识别关键词呢?

输入:

singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪

请播放周杰伦的七里香给我听

输出:

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

 

def main():
    S1= raw_input()
    S2 = raw_input()
    dic = {}
    for sen in S1.split(';'):
        Class, name = sen.split('_')
        dic.setdefault(Class,[])
        for k in name.split('|'):
            dic[Class].append(k)
    k = 0
    res = ''
    while k<len(S2):
        rel = ''
        clas = []
        for Class, val in dic.items():
            for i in val:
                l = len(i)
                if S2[k:k+l]==i:
                    if len(rel)<l:
                        rel = i
                        clas = [Class]
                    elif len(rel)==l and rel==i:
                        clas.append(Class)
        if not rel:
            res += S2[k]
            k += 1
        else:
            clas.sort()
            k += len(rel)
            res = res+ ' '+rel+r'/'+','.join(clas)+' '
    print res.strip(' ')
if __name__=='__main__':
    main()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值