Longest Common Subsequence
Find the length of the longest subsequence shared by two strings.
Progress cannot be saved in this browser, so completed lessons will reset when you leave.
Lesson notes
Try it before you watch
Restate the problem in your own words, list the edge cases, and sketch a solution with its running time. Then play the video and compare.
Reveal the key idea
dp[i][j] = dp[i − 1][j − 1] + 1 when the characters match, otherwise the larger of dp[i − 1][j] and dp[i][j − 1].
Pattern: Dynamic programming. Define a state, write the recurrence between states, and compute each state only once.
Complexity
| Measure | Bound |
|---|---|
| Time | O(m · n) |
| Extra space | O(m · n), or O(min(m, n)) with rolling rows |
Walkthroughs often start from a simpler approach first; aim to reach these bounds. New to Big-O? Read understanding algorithmic complexity.