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 considered in the Levenshtein distance calculation?
Insertion, deletion, and substitution of a single character.
Click to reveal answer
intermediate
What is the base case when calculating Levenshtein distance using dynamic programming?
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 help in solving the Edit Distance problem?
It stores the minimum edit distances for all prefixes of the two strings, allowing reuse of previous results to build the solution efficiently.
Click to reveal answer
intermediate
What is the time complexity of the Levenshtein distance algorithm using dynamic programming?
O(m * n), where m and n are the lengths of the two strings.
Click to reveal answer
Which of the following is NOT an operation used in Levenshtein distance?
ATransposition
BDeletion
CSubstitution
DInsertion
✗ Incorrect
Levenshtein distance considers insertion, deletion, and substitution. Transposition is used in a different edit distance called Damerau-Levenshtein.
What is the edit distance between "cat" and "cut"?
A3
B2
C1
D0
✗ Incorrect
Only one substitution is needed: replace 'a' with 'u'.
If one string is empty and the other has length 5, what is the edit distance?
A0
B5
C1
DCannot be determined
✗ Incorrect
All 5 characters must be inserted or deleted, so the distance is 5.
What does the cell dp[i][j] represent in the dynamic programming table for Levenshtein distance?
ADistance between prefixes of length i and j
BNumber of substitutions only
CDistance between full strings
DLength of the longer string
✗ Incorrect
dp[i][j] stores the minimum edit distance between the first i characters of one string and the first j characters of the other.
What is the main advantage of using dynamic programming for the Edit Distance problem?
AIt finds the longest common substring
BIt uses less memory
CIt works only for small strings
DIt avoids recalculating subproblems
✗ Incorrect
Dynamic programming stores results of subproblems to avoid repeated calculations, improving efficiency.
Explain how to compute the Levenshtein distance between two strings using dynamic programming.
Think about how to build the solution from smaller parts.
You got /4 concepts.
Describe the role of the dynamic programming table in solving the Edit Distance problem and how it improves efficiency.
Focus on how previous results help solve bigger problems.
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 characters that are the same in both strings
C. The length difference between two strings
D. The maximum number of matching characters in order
Solution
Step 1: Understand the definition of Edit Distance
Edit Distance counts how many changes are needed to turn one string into another using insert, delete, or substitute operations.
Step 2: Compare options with definition
Only The minimum number of insertions, deletions, or substitutions to convert one string into another correctly describes the minimum number of these operations needed.
Final Answer:
The minimum number of insertions, deletions, or substitutions to convert one string into another -> Option A
Quick Check:
Edit Distance = minimum edits [OK]
Hint: Edit Distance counts minimal edits to match strings [OK]
Common Mistakes:
Confusing edit distance with common substring length
Thinking it measures only character matches
Assuming it counts only insertions or deletions
2. Which of the following Java method signatures correctly represents a function to compute the Levenshtein distance between two strings s1 and s2?
easy
A. public boolean levenshteinDistance(String s1, String s2)
B. public void levenshteinDistance(String s1, String s2)
C. public String levenshteinDistance(String s1, String s2)
D. public int levenshteinDistance(String s1, String s2)
Solution
Step 1: Identify the return type for Levenshtein distance
The Levenshtein distance is a number representing the count of edits, so the return type should be int.
Step 2: Check method signature correctness
public int levenshteinDistance(String s1, String s2) returns int and takes two String parameters, which is correct. Other options return void, String, or boolean, which are incorrect for this purpose.
Final Answer:
public int levenshteinDistance(String s1, String s2) -> Option D
Quick Check:
Return type int for distance [OK]
Hint: Distance is a number, so return int [OK]
Common Mistakes:
Using void return type and not returning a value
Returning String instead of int
Returning boolean which is not suitable
3. What is the Levenshtein distance between the strings "kitten" and "sitting"?
medium
A. 2
B. 3
C. 4
D. 5
Solution
Step 1: Compare strings and count edits
Transform "kitten" to "sitting": substitute 'k'->'s', substitute 'e'->'i', insert 'g' at end. Total edits = 3.
Step 2: Confirm minimal edits
No fewer than 3 edits can convert "kitten" to "sitting".
Counting only substitutions and missing insertions
Miscounting edits by skipping characters
Assuming length difference equals distance
4. Given the following Java code snippet to compute Levenshtein distance, what is the error?
public int levenshteinDistance(String s1, String s2) {
int[][] dp = new int[s1.length()][s2.length()];
for (int i = 0; i <= s1.length(); i++) {
for (int j = 0; j <= s2.length(); j++) {
if (i == 0) dp[i][j] = j;
else if (j == 0) dp[i][j] = i;
else if (s1.charAt(i - 1) == s2.charAt(j - 1)) dp[i][j] = dp[i - 1][j - 1];
else dp[i][j] = 1 + Math.min(dp[i - 1][j - 1], Math.min(dp[i][j - 1], dp[i - 1][j]));
}
}
return dp[s1.length()][s2.length()];
}
medium
A. The return statement should return dp[s1.length()-1][s2.length()-1]
B. The loops should start from 1 instead of 0
C. Array dp is declared with wrong size causing IndexOutOfBoundsException
D. The character comparison uses wrong indices
Solution
Step 1: Check dp array size
dp is declared as new int[s1.length()][s2.length()] but loops run up to s1.length() and s2.length() inclusive, causing index out of bounds.
Step 2: Identify correct dp size
dp should be new int[s1.length()+1][s2.length()+1] to accommodate indices up to s1.length() and s2.length().
Final Answer:
Array dp is declared with wrong size causing IndexOutOfBoundsException -> Option C
Quick Check:
dp size must be length+1 [OK]
Hint: dp array size must be lengths + 1 [OK]
Common Mistakes:
Declaring dp with exact string lengths only
Returning dp at wrong indices
Starting loops incorrectly causing errors
5. What is the Levenshtein distance between the strings "intention" and "execution"?
hard
A. 6
B. 5
C. 4
D. 7
Solution
Step 1: Align the strings and identify differences
Both strings have length 9. The minimal edit sequence includes substitutions and insertions/deletions. The Levenshtein distance is 6, as confirmed by standard DP computation.
Step 2: Confirm no better alignment
Insertions/deletions and substitutions combined yield a minimum of 6 edits.
Final Answer:
6 -> Option A
Quick Check:
intention -> execution = 6 [OK]
Hint: Align strings and compute minimum operations via mismatches or DP trace [OK]
Common Mistakes:
Counting 6 by proposing unnecessary insert/delete
Underestimating by ignoring all mismatches (e.g., 4)
Overestimating due to poor alignment
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.