Spaces:
Running
Running
# fast_lcs.pyx | |
import numpy as np | |
cimport cython | |
cimport numpy as np | |
def compute_lcs_fast(list words1, list words2): | |
cdef int m = len(words1) | |
cdef int n = len(words2) | |
cdef np.ndarray[np.int32_t, ndim=2] dp = np.zeros((m + 1, n + 1), dtype=np.int32) | |
cdef int i, j | |
for i in range(1, m + 1): | |
for j in range(1, n + 1): | |
if words1[i - 1] == words2[j - 1]: | |
dp[i, j] = dp[i - 1, j - 1] + 1 | |
else: | |
dp[i, j] = max(dp[i - 1, j], dp[i, j - 1]) | |
return int(dp[m, n]) | |