题解 | #公共子串计算#

公共子串计算

http://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

"""
获取两个输入
设最大长度为 0
建立一个二维列表,不用考虑两个列表的长度,均偏移 1
两层循环,两个指针,比较两个输入的字符串是否相等
如果相等,将两个下标对应的二维列表的值 +1,赋给偏移后的值
如果该值大于当前最大长度,则更新最大长度的值
返回最大长度的值即可
"""

def dyp(s1, s2):
    max_len = 0
    td_list = [[0 for j in range(len(s2) + 1)] for i in range(len(s1) + 1)]
    for i in range(len(s1)):
        for j in range(len(s2)):
            if s1[i] == s2[j]:
                td_list[i + 1][j + 1] = td_list[i][j] + 1
                if td_list[i + 1][j + 1] > max_len:
                    max_len = td_list[i + 1][j + 1]
    return max_len

while True:
    try:
        str_1 = input().strip()
        str_2 = input().strip()
        print(dyp(str_1, str_2))
    except:
        break
    
全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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