class Solution(object):
def LCS(self, i, j):
if i >= self.m or j >= self.n:
return 0
if (i, j) in self.mem:
return self.mem[i, j]
if self.text1[i] == self.text2[j]:
self.mem[i, j] = 1 + self.LCS(i+1, j+1)
else:
self.mem[i, j] = max(self.LCS(i+1, j), self.LCS(i, j+1))
return self.mem[i, j]
def longestCommonSubsequence(self, text1, text2):
"""
:type text1: str
:type text2: str
:rtype: int
"""
self.m = len(text1)
self.n = len(text2)
self.text1 = text1
self.text2 = text2
self.mem = {}
return self.LCS(0, 0)