Coders Crushby Napplied AI
Back to DSA Problems
MediumLeetCode #72Dynamic Programming

Edit Distance

Given two strings word1 and word2, return the minimum number of operations required to convert word1 to word2. You have the following three operations: Insert, Delete, Replace a character.

Constraints
0 <= word1.length, word2.length <= 500
Coders Crushby Napplied AI

The ultimate interview preparation platform. Master System Design, DSA, and tackle community challenges to crush your FAANG interviews.

System Design

  • All Problems
  • Easy
  • Hard

DSA

  • All Problems
  • Dynamic Programming
  • Graphs

More

  • Problems Arena
  • Growth Paths
  • AI Discovery

Coders Crush by Napplied AI - Built for engineers preparing for FAANG/MAANG interviews

Examples
Input: word1 = "horse", word2 = "ros"
Output: 3
Solution

Approach

2D DP where dp[i][j] = min ops to convert word1[0:i] to word2[0:j]. If chars match, dp[i][j] = dp[i-1][j-1]. Else take min of insert, delete, replace + 1.

def minDistance(word1, word2):
    m, n = len(word1), len(word2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]
    for i in range(m + 1):
        dp[i][0] = i
    for j in range(n + 1):
        dp[0][j] = j
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if word1[i-1] == word2[j-1]:
                dp[i][j] = dp[i-1][j-1]
            else:
                dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])
    return dp[m][n]
Complexity
Time:O(mn)
Space:O(mn)
Hints
  • 1.Classic 2D DP problem
  • 2.Think about subproblems on prefixes
  • 3.Three choices when chars differ: insert, delete, replace
Asked at
GoogleAmazonMicrosoftApple