What is the edit distance (Levenshtein distance) problem?
Answer
The Edit Distance problem finds the minimum number of single-character operations (insert, delete, substitute) to transform one string into another. Operations: Insert a character; Delete a character; Substitute a character. Example: "kitten" → "sitting" = 3 operations (substitute k→s, substitute e→i, insert g). DP solution: dp[i][j] = min operations to convert s1[0..i-1] to s2[0..j-1]. Recurrence: if s1[i-1] == s2[j-1]: dp[i][j] = dp[i-1][j-1] (no operation needed); else: dp[i][j] = 1 + min(dp[i-1][j] (delete), dp[i][j-1] (insert), dp[i-1][j-1] (substitute)). Base: dp[i][0] = i (delete i characters), dp[0][j] = j (insert j characters). Time: O(m×n). Space: O(m×n), optimized to O(min(m,n)) using two rows. Applications: (1) Spell checker — suggest corrections; (2) DNA sequence alignment; (3) Fuzzy string matching; (4) git diff; (5) Plagiarism detection; (6) Natural language processing. Hamming distance: edit distance considering only substitutions (strings must be equal length). Jaro-Winkler distance: better for short strings like names.