Class Solution
Hard
Given two strings word1 and word2, return the minimum number of operations required to convert word1 to word2.
You have the following three operations permitted on a word:
- Insert a character
- Delete a character
- 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 <= 500word1andword2consist of lowercase English letters.
To solve the “Edit Distance” problem in Java with the Solution class, follow these steps:
- Define a method
minDistancein theSolutionclass that takes two stringsword1andword2as input and returns the minimum number of operations required to convertword1toword2. - Initialize a 2D array
dpof size(m+1) x (n+1), wheremis the length ofword1andnis the length ofword2. - Set
dp[i][0] = ifor allifrom0tom, as the minimum number of operations to convert a string of lengthito an empty string isideletions. - Set
dp[0][j] = jfor alljfrom0ton, as the minimum number of operations to convert an empty string to a string of lengthjisjinsertions. - Iterate over the characters of
word1andword2:- If
word1.charAt(i-1)is equal toword2.charAt(j-1), setdp[i][j] = dp[i-1][j-1], as no operation is required to match these characters. - Otherwise, set
dp[i][j]to the minimum of the following three options:dp[i-1][j] + 1: Delete the character at positionifromword1.dp[i][j-1] + 1: Insert the character at positionjfromword2intoword1.dp[i-1][j-1] + 1: Replace the character at positioniinword1with the character at positionjinword2.
- If
- Return
dp[m][n], which represents the minimum number of operations required to convertword1toword2.
Here’s the implementation of the minDistance method in Java:
class Solution {
public int minDistance(String word1, String word2) {
int m = word1.length();
int n = word2.length();
int[][] dp = new int[m + 1][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 (word1.charAt(i - 1) == word2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1];
} else {
dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i][j - 1], dp[i - 1][j - 1])) + 1;
}
}
}
return dp[m][n];
}
}
This implementation efficiently calculates the minimum edit distance between two strings using dynamic programming, with a time complexity of O(m * n) and a space complexity of O(m * n), where m is the length of word1 and n is the length of word2.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
minDistance
-