DP #16. Longest Common Subsequence. - mbhushan/dynpro GitHub Wiki

(15). Longest Common Subsequence.

Given two strings, find longest common subsequence between them.

String Y = abcdaf
String X = zbcdf
LCS = bcdf (len -> 4)
Formula:

if (X[i] == Y[j]) {
    T[i][j] = T[i-1][j-1] + 1;
} else {
    T[i][j] = Max(T[i-1][j], T[i][j-1])
}
0 a b c d a f
0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0
b 0 0 1 0 0 0 0
c 0 0 1 2 2 2 2
d 0 0 1 2 3 3 3
f 0 0 1 2 3 3 4

[Longest common subsequence] (https://github.com/mbhushan/dynpro/blob/master/DP_LongestCommonSubsequence/src/LongestCommonSubsequence.java)

  • Time Complexity: O(n * m)
  • Space Complexity: O(n * m)