题解 | #查找两个字符串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

全部评论

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务