Longest Common Subsequence

Watch how 2D dynamic programming finds the longest common subsequence between two strings by building a table step by step.

Time: O(m × n)
Space: O(m × n)
2D DP Table
Backtracking
Fast (300ms)Slow (2000ms)
Progress: Step 1 of 0Phase: start

Strings Being Compared

String 1:
A
B
C
D
G
H
String 2:
A
E
D
F
H
R

DP Table

Current Step:

Click Start to begin the LCS visualization

Algorithm Details

Time Complexity:O(m × n)
Space Complexity:O(m × n)
Type:2D DP
Space Optimized:O(min(m,n))

Real-world Applications

  • DNA sequence alignment in bioinformatics
  • File difference detection (diff tools)
  • Version control systems (Git)
  • Text similarity and plagiarism detection
  • Data compression algorithms
  • Spell checkers and autocorrect

Key DP Concepts

  • 2D Table: dp[i][j] = LCS length of first i and j characters
  • Match: If chars match, dp[i][j] = dp[i-1][j-1] + 1
  • No Match: dp[i][j] = max(dp[i-1][j], dp[i][j-1])
  • Base Case: Empty string has LCS length 0

Related DP Problems

  • Longest Common Substring
  • Edit Distance (Levenshtein)
  • Longest Increasing Subsequence
  • Sequence Alignment
  • Maximum Palindromic Subsequence