LCS问题
题目描述:给定两个字符A和B,长度分别是m和n,要求找出他们最长公共子序列,并返回其长度
例如:
A= "HelloWorld"
B= "loop"
最长公共子序列是“loo”,返回的长度是3,注:最长公共子串是“lo”,
具体思路是:
def LCS(string1,string2):
len1 = len(string1)
len2 = len(string2)
res = [[0 for i in range(len1+1)] for j in range(len2+1)]
for i in range(1,len2+1):
for j in range(1,len1+1):
if string2[i-1] == string1[j-1]:
res[i][j] = res[i-1][j-1]+1
else:
res[i][j] = max(res[i-1][j],res[i][j-1])
return res[-1][-1]
a = "" + input()
b = "" + input()
print(LCS(a,b))