实际上是最长连续公共子串
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]]


京公网安备 11010502036488号