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

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

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

while 1:
    try:
        a = input()
        b = input()
        dic = {}
        y = []
        for i in range(len(a)):
            for j in range(i+1,len(a)):
                if a[i: j+1] in b:
                    dic[a[i:j+1]] = len(a[i:j+1])
        for i in dic:
            if dic[i] == max(dic.values()):
                y.append(i)
#以下为了解决相同长度字符串出现相同长度长度字串的问题
        if len(y) == 1:
            print(y[0])
        else:
            if len(a)>len(b):
                for i in range(len(b)):
                    if b[i:i+len(y[0])] in y:
                        print(b[i:i+len(y[0])])
                        break
            elif len(a)<len(b):
                for i in range(len(a)):
                    if a[i:i+len(y[0])] in y:
                        print(a[i:i+len(y[0])])
                        break
            else:
                for i in range(len(a)):
                    if a[i:i+len(y[0])] in y:
                        m =i
                        ym = a[i:i+len(y[0])]
                        break
                for i in range(len(b)):
                    if b[i:i+len(y[0])] in y:
                        n =i
                        yn = b[i:i + len(y[0])]
                        break
                if m>n:
                    print(yn)
                elif m<n:
                    print(ym)

    except:
        break

全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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