Bird
Raised Fist0
DSA C++programming~5 mins

Edit Distance Problem Levenshtein in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Edit Distance (Levenshtein distance) between two strings?
It is the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into the other.
Click to reveal answer
beginner
Which operations are allowed in calculating Levenshtein distance?
Insertion, deletion, and substitution of a single character.
Click to reveal answer
intermediate
What is the base case when using dynamic programming for Levenshtein distance?
When one string is empty, the distance is the length of the other string (all insertions or deletions).
Click to reveal answer
intermediate
How does the dynamic programming table for Levenshtein distance get filled?
Each cell represents the minimum edit distance between prefixes of the two strings, computed using values from neighboring cells (top, left, and diagonal).
Click to reveal answer
beginner
Why is Levenshtein distance useful in real life?
It helps in spell checking, DNA sequence analysis, and natural language processing by measuring how similar two strings are.
Click to reveal answer
Which of the following is NOT an allowed operation in Levenshtein distance?
ATransposition
BDeletion
CInsertion
DSubstitution
What is the Levenshtein distance between "cat" and "cut"?
A3
B2
C1
D0
If one string is empty and the other has length 5, what is the edit distance?
A0
B5
CCannot determine
D1
In dynamic programming for Levenshtein distance, what does the cell dp[i][j] represent?
ADistance between prefixes of length i and j
BDistance between full strings
CNumber of substitutions only
DLength of the longer string
Which algorithmic technique is commonly used to solve the Levenshtein distance problem efficiently?
AGreedy algorithm
BBacktracking
CDivide and conquer
DDynamic programming
Explain how dynamic programming helps in calculating the Levenshtein distance between two strings.
Think about how you compare prefixes of the strings step by step.
You got /4 concepts.
    Describe a real-life scenario where calculating the Levenshtein distance is useful and why.
    Consider situations where you want to find how close two words or sequences are.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the Edit Distance (Levenshtein distance) between two strings measure?
      easy
      A. The minimum number of insertions, deletions, or substitutions to convert one string into another
      B. The number of matching characters in the same positions
      C. The length difference between two strings
      D. The maximum number of characters that differ between two strings

      Solution

      1. Step 1: Understand the definition of Edit Distance

        Edit Distance counts how many changes are needed to make two strings equal.
      2. Step 2: Identify allowed operations

        Allowed operations are insertion, deletion, and substitution of characters.
      3. Final Answer:

        The minimum number of insertions, deletions, or substitutions to convert one string into another -> Option A
      4. Quick Check:

        Edit Distance = minimum edits needed [OK]
      Hint: Think of edits needed to match strings exactly [OK]
      Common Mistakes:
      • Confusing edit distance with matching characters count
      • Ignoring substitution as an allowed operation
      • Thinking it measures only length difference
      2. Which of the following is the correct way to initialize the base case for the DP table in Levenshtein distance calculation in C++?
      easy
      A. for (int i = 0; i <= m; i++) dp[i][0] = i;
      B. for (int j = 0; j <= n; j++) dp[0][j] = 0;
      C. dp[0][0] = 1;
      D. for (int i = 1; i <= m; i++) dp[i][0] = 0;

      Solution

      1. Step 1: Understand base case meaning

        dp[i][0] means converting first i characters of string1 to empty string, so requires i deletions.
      2. Step 2: Identify correct initialization

        Setting dp[i][0] = i correctly counts deletions needed for empty second string.
      3. Final Answer:

        for (int i = 0; i <= m; i++) dp[i][0] = i; -> Option A
      4. Quick Check:

        Base case rows = index count [OK]
      Hint: Base case dp[i][0] = i for deletions [OK]
      Common Mistakes:
      • Initializing dp[0][j] incorrectly to zero
      • Starting loops from 1 instead of 0
      • Setting dp[0][0] to 1 instead of 0
      3. What is the output of the following C++ code snippet that calculates the Levenshtein distance between "kitten" and "sitting"?
      int levenshteinDistance(const string &s, const string &t) {
          int m = s.size(), n = t.size();
          vector dp(m + 1, vector<int>(n + 1));
          for (int i = 0; i <= m; i++) dp[i][0] = i;
          for (int j = 0; j <= n; j++) dp[0][j] = j;
          for (int i = 1; i <= m; i++) {
              for (int j = 1; j <= n; j++) {
                  if (s[i - 1] == t[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];
      }
      
      cout << levenshteinDistance("kitten", "sitting") << endl;
      medium
      A. 4
      B. 6
      C. 5
      D. 3

      Solution

      1. Step 1: Understand the strings and operations

        "kitten" to "sitting" requires substitutions and insertions.
      2. Step 2: Calculate minimum edits

        Substitute 'k'->'s', substitute 'e'->'i', insert 'g' at end, total 3 edits.
      3. Final Answer:

        3 -> Option D
      4. Quick Check:

        Levenshtein distance("kitten", "sitting") = 3 [OK]
      Hint: Count substitutions + insertions needed [OK]
      Common Mistakes:
      • Counting only substitutions, ignoring insertions
      • Misaligning indices causing off-by-one errors
      • Confusing Levenshtein with Hamming distance
      4. Identify the bug in this Levenshtein distance C++ code snippet:
      int levenshteinDistance(string s, string t) {
          int m = s.size(), n = t.size();
          vector dp(m, vector<int>(n));
          for (int i = 0; i <= m; i++) dp[i][0] = i;
          for (int j = 0; j <= n; j++) dp[0][j] = j;
          for (int i = 1; i <= m; i++) {
              for (int j = 1; j <= n; j++) {
                  if (s[i - 1] == t[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];
      }
      medium
      A. The return statement should be dp[m-1][n-1]
      B. The dp vector is initialized with size m x n instead of (m+1) x (n+1)
      C. The loops should start from 0 instead of 1
      D. The comparison s[i] == t[j] is incorrect

      Solution

      1. Step 1: Check dp vector initialization

        dp must have size (m+1) x (n+1) to include base cases for empty strings.
      2. Step 2: Identify impact of wrong size

        With size m x n, accessing dp[m][0] or dp[0][n] causes out-of-bounds errors.
      3. Final Answer:

        The dp vector is initialized with size m x n instead of (m+1) x (n+1) -> Option B
      4. Quick Check:

        dp size must be (m+1) x (n+1) [OK]
      Hint: dp size must cover empty string cases [OK]
      Common Mistakes:
      • Forgetting to add +1 to dp dimensions
      • Returning dp[m][n] without proper dp size
      • Incorrect loop ranges causing index errors
      5. Given two strings "intention" and "execution", what is the minimum edit distance using Levenshtein algorithm? Show the reasoning for each step.
      hard
      A. 7
      B. 5
      C. 6
      D. 8

      Solution

      1. Step 1: Analyze character differences

        Compare "intention" and "execution" character by character, counting edits needed.
      2. Step 2: Calculate minimal edits

        The optimal alignment requires 6 edits: substitutions, insertions, and deletions to match exactly.
      3. Final Answer:

        6 -> Option C
      4. Quick Check:

        Levenshtein distance("intention", "execution") = 6 [OK]
      Hint: Count substitutions and insertions carefully [OK]
      Common Mistakes:
      • Ignoring insertions or deletions
      • Miscounting substitutions
      • Assuming only substitutions needed
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard