题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506


a = raw_input()
b = raw_input()
这个是我参考别人的,在他的基础上修复了字符串为1的情况不打印结果的bug,增加了两个字符串长度相同时,输出两个字符串里面更靠前的公共子串。
def f(a,b):    
    if len(a)>len(b):
        a,b=b,a
    res = ''
    for i in range(0,len(a)+1):
        for j in range(i,len(a)):
            if a[i:j+1] in b and j+1-i>len(res):
                res = a[i:j+1]
    ml = len(res)
    ls = {}
    if len(a) == len(b):
        #下来利用公共子串在字符串出现的位置作为字典的key,公共子串作为value来实现
        for i in range(len(a)):
            if a[i:i+ml] in b and i+ml <len(a)+1:
                ls[i] = a[i:i+ml]
        for j in range(len(b)):
            if b[j:j+ml] in a and j+ml <len(b)+1:
                ls[j] = b[j:j+ml]
        ls2 = sorted(ls.keys())
        print ls[0]
    else:
        print res 
f(a, b)

全部评论

相关推荐

10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
10-20 11:11
辽宁大学 营销
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务