Leetcode 72.编辑距离
对应acwing,其实应该叫最短编辑距离
动态规划 \(O(n^2)\)

时间复杂度
\(O(n^2)\)
空间复杂度
\(O(n^2)\)
C++ 代码
class Solution {
public:
int minDistance(string word1, string word2) {
int m = word1.size(), n = word2.size();
if (!m) return n;
if (!n) return m;
word1 = ' ' + word1, word2 = ' ' + word2;
int f[m + 1][n + 1];
memset(f, 0, sizeof f);
// 初始化,想象两个字符串各自是空串的时候做什么操作
for (int i = 0; i <= m; i ++) f[i][0] = i;
for (int i = 0; i <= n; i ++) f[0][i] = i;
for (int i = 1; i <= m; i ++)
{
for (int j = 1; j <= n; j ++)
{
// 增、删
f[i][j] = min(f[i][j - 1] + 1, f[i - 1][j] + 1);
// 改
if (word1[i] == word2[j]) f[i][j] = min(f[i][j], f[i - 1][j - 1]);
else f[i][j] = min(f[i][j], f[i - 1][j - 1] + 1);
}
}
return f[m][n];
}
};

浙公网安备 33010602011771号