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

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
评论
6
收藏
分享
牛客网
牛客企业服务