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)