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

while True:
    try:
        s1=input()
        s2=input()
        
        if len(s1)>len(s2):
            s1,s2=s2,s1
        
        len1, len2=len(s1)+1, len(s2)+1
        dp=[[0 for j in range(len2)] for i in range(len1)]
        
        max_len=0
        max_index=0
        for i in range(1, len1):
            for j in range(1, len2):
                if s1[i-1]==s2[j-1]:
                    dp[i][j]=dp[i-1][j-1]+1
                    
                    if dp[i][j]>max_len:
                        max_len=dp[i][j]
                        max_index=i
#         print(max_index, max_len)
        
        print(s1[max_index-max_len:max_index])
    except:
        break
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务