两个字符串求最长公共子序列的方法,为与最长公共子串相区分,注意这里的说辞。
公共子串说的是字符串是连续相同的,中间没有夹杂其他字符;
公共子序列说的是原字符串中去除一部分字符后的字符串相同。
import numpy
def MaxConsequence(stringa,stringb):
lena=len(stringa)
lenb=len(stringb)
listMatrix=array([[0]*lena]*lenb)
for i in range(lenb):
for j in range(lena):
if stringb[i]==stringa[j]:
listMatrix[i][j] = listMatrix[i-1][j-1]+1
else:
listMatrix[i][j] = max(listMatrix[i-1][j],listMatrix[i][j-1])
print listMatrix[lenb-1][lena-1]