最长公共子序列-python

来源:互联网 发布:种植牙 植骨 知乎 编辑:程序博客网 时间:2024/05/25 16:37
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()
0 0