Tutorialspoint
Problem
Solution
Submissions

Edit Distance

Certification: Advanced Level Accuracy: 0% Submissions: 0 Points: 15

Write a C# program to implement the EditDistance(string word1, string word2) function, which calculates the minimum number of operations required to convert word1 to word2. The allowed operations are:

  1. Insert a character
  2. Delete a character
  3. Replace a character
Example 1
  • Input: word1 = "horse", word2 = "ros"
  • Output: 3
  • Explanation:
    • horse → rorse (replace 'h' with 'r')
    • rorse → rose (remove 'r')
    • rose → ros (remove 'e')
Example 2
  • Input: word1 = "intention", word2 = "execution"
  • Output: 5
  • Explanation:
    • intention → inention (remove 't')
    • inention → enention (replace 'i' with 'e')
    • enention → exention (replace 'n' with 'x')
    • exention → exection (replace 'n' with 'c')
    • exection → execution (insert 'u')
Constraints
  • 0 <= word1.length, word2.length <= 500
  • word1 and word2 consist of lowercase English letters
  • Time Complexity: O(m * n) where m and n are lengths of the two strings
  • Space Complexity: O(m * n)
ArraysDynamic Programming IBMGoldman Sachs
Editorial

Login to view the detailed solution and explanation for this problem.

My Submissions
All Solutions
Lang Status Date Code
You do not have any submissions for this problem.
User Lang Status Date Code
No submissions found.

Please Login to continue
Solve Problems

 
 
 
Output Window

Don't have an account? Register

Solution Hints

  • Use dynamic programming to solve this problem efficiently
  • Create a 2D array to store intermediate results
  • Consider all three operations at each step and choose the minimum
  • The value at dp[i][j] represents the minimum edit distance between word1[0...i-1] and word2[0...j-1]
  • Base cases: converting an empty string to a non-empty string requires insertions equal to the length

Steps to solve by this approach:

 Step 1: Create a 2D array dp where dp[i][j] represents the minimum edit distance between word1[0...i-1] and word2[0...j-1].
 Step 2: Initialize base cases - converting an empty string to a non-empty string requires insertions equal to the length.
 Step 3: For each character in word1 and word2, compare the characters.
 Step 4: If characters match, no operation is needed, so dp[i][j] = dp[i-1][j-1].
 Step 5: If characters don't match, take the minimum of three operations: insertion (dp[i][j-1]), deletion (dp[i-1][j]), or replacement (dp[i-1][j-1]), and add 1.
 Step 6: Continue filling the dp table until we process all characters.
 Step 7: The value at dp[m][n] is the minimum edit distance between the two strings.

Submitted Code :