python3动态规划

最长公共子串

http://www.nowcoder.com/questionTerminal/f33f5adc55f444baa0e0ca87ad8a6aac

实际上是最长连续公共子串

class Solution:
    def LCS(self , str1 , str2 ):
        n, m = len(str1), len(str2)
        dp = [[0] * (m+1) for _ in range(n+1)]
        p = (0,0)
        for i in range(1,n+1):
            for j in range(1,m+1):
                tmp = int(str1[i-1] == str2[j-1])
                dp[i][j] = dp[i-1][j-1] + tmp if tmp else 0
                p = (i,j) if dp[i][j] > dp[p[0]][p[1]] else p
        return str1[p[0]-dp[p[0]][p[1]]:p[0]]
全部评论
这样写第7个样例会超时,不知道要怎么优化
点赞 回复 分享
发布于 2022-04-09 13:12

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
评论
6
收藏
分享
牛客网
牛客企业服务