Leetcode 72.编辑距离

对应acwing,其实应该叫最短编辑距离

Leetcode Acwing

动态规划 \(O(n^2)\)

image-20201227193006373

时间复杂度

\(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];
    }
};
posted @ 2020-12-27 19:33  alexemey  阅读(59)  评论(0)    收藏  举报