In [3]:
import numpy as np
In [29]:
def lcs(x: str, y: str) -> int:
n = len(x)
m = len(y)
# initialize table to zeros
l = np.zeros((n + 1, m + 1))
for i in range(1, n + 1):
for j in range(1, m + 1):
if x[i - 1] == y[j - 1]:
l[i, j] = 1 + l[i - 1, j - 1]
else:
l[i, j] = l[i, j - 1]
# return the max of the last column
return l[:, m].max()
In [30]:
lcs('abdbabfgd', 'betfdbfafr')
Out[30]: