Я написал следующий код для этой проблемы, но он не работает в тестовом примере text1 = 'abcde', text2 = 'ace'. Мой ответ идет как 2, а правильный ответ 3
class Solution:
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
self.arr3 = [[-1 for x in range(1000)] for y in range(1000)]
return self.lcs(0,0,self.text1,self.text2,self.arr3)
def lcs(self,i,j,text1,text2,arr3):
if (i>=len(text1) or j>=len(text2)):
return 0
elif (text1[i]==text2[j]):
return (1+ self.lcs(i+1,j+1,text1,text2,arr3))
elif arr3[i][j] != -1:
return arr3[i][j]
else:
self.left = self.lcs(i+1,j,text1,text2,arr3)
self.right = self.lcs(i,j+1,text1,text2,arr3)
arr3[i][j] = max(self.left,self.right)
return arr3[i][j]
def __init__(self):
self.text1 = input()
self.text2 = input()
print(self.longestCommonSubsequence(self.text1,self.text2))
Solution()