583. Delete Operation for Two Strings
Input: "sea", "eat"
Output: 2
Explanation: You need one step to make "sea" to "ea" and another step to make "eat" to "ea".// Dynamic Programming
int minDistance(string word1, string word2) { // time: O(m * n); space: O(m * n)
if (word1.empty()) return word2.length();
if (word2.empty()) return word1.length();
int m = word1.length(), n = word2.length();
vector<vector<int> > dp(m + 1, vector<int> (n + 1, 0));
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (word1[i - 1] == word2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
// dp[m][n]: the length of LCS
return (m - dp[m][n]) + (n - dp[m][n]);
}Last updated