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

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

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

动态规划。

while True:
    try:
        s1, s2 = input(), input()
        if len(s1) > len(s2):
            s1, s2 = s2, s1
        m, n = len(s1), len(s2)
        dp = [0] * (n+1)
        max_lens = 0
        idx = 0
        a, b = 0, 0
        # print(m, n)
        for i in range(1, m + 1):
            for j in range(n, 0, -1):
                if s1[i-1] == s2[j-1]:
                    dp[j] = dp[j-1] + 1
                    if dp[j] > max_lens:
                        max_lens = dp[j]
                        idx = j
                else:
                    dp[j] = 0
        print(s2[idx - max_lens : idx])
    except:
        break
全部评论
动态规划之一维数组解决问题,好思路,点赞
点赞 回复 分享
发布于 2024-01-25 22:26 上海

相关推荐

评论
3
收藏
分享

创作者周榜

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