求2个字符串的最大公共子序列(可不连续)
比如:a = 'ABCBDAB' ,b = 'BDCABA',公共子序列为‘BCBA’
这2篇文章写的很好:
def LCS_str(s1,s2):
n = len(s1)
m = len(s2)
arr = [[0 for i in range(m+1)] for j in range(n+1)]
flag = [[0 for i in range(m+1)] for j in range(n+1)]
for i in range(n):
for j in range(m):
if s1[i] == s2[j]: #如果2个字符相等,加1
arr[i+1][j+1] = arr[i][j]+1
flag[i+1][j+1] = 'ok'
elif arr[i+1][j]>arr[i][j+1]:
arr[i+1][j+1] = arr[i+1][j]
flag[i+1][j+1] =