class SeqMax:
def __init__(self, str1, str2):
self.resMatrix = []
self.str1 = str1
self.str2 = str2
self.str1len = len(str1)
self.str2len = len(str2)
self._createMatrix()
def printMatrix(self):
print('=' * 20)
for x in range(self.str1len+1):
for y in range(self.str2len+1):
print('%s ' % self.resMatrix[x][y], end = '')
print()
def computeMaxLen(self):
for x in range(1, self.str1len+1):
for y in range(1, self.str2len+1):
if self.str1[x-1] == self.str2[y-1]:
self.resMatrix[x][y] = self.resMatrix[x-1][y-1] + 1
else:
self.resMatrix[x][y] = max(self.resMatrix[x-1][y], self.resMatrix[x][y-1])
return self.resMatrix[self.str1len][self.str2len]
def _createMatrix(self):
for x in range(self.str1len+1):
l = []
for y in range(self.str2len+1):
l.append(0)
self.resMatrix.append(l)
if __name__ == '__main__':
str1 = 'lanx'
str2 = 'asdfla333nx3'
seqmax = SeqMax(str1, str2)
seqmax.printMatrix()
res = seqmax.computeMaxLen()
print(res)
seqmax.printMatrix()
最长公共子序列-python
最新推荐文章于 2024-05-06 19:18:27 发布