class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param word1 string字符串
     * @param word2 string字符串
     * @return int整型
     */
    int dp[1000][1000];
    int minDistance(string word1, string word2) {
        // write code here
        int n = word1.size(), m = word2.size();
        for (int i = 0; i <= n; ++i)dp[i][0] = i;
        for (int i = 0; i <= m; ++i)dp[0][i] = i;
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + 1;
                if (word1[i - 1] == word2[j - 1])
                    dp[i][j] = min(dp[i][j], dp[i - 1][j - 1]);
            }
        }
        return dp[n][m];
    }
};

一、题目考察的知识点

dp

二、题目解答方法的文字分析

状态转移方程:变化的最少次数就是从上边和右边中选择最小那个然后进行加一

但是如果字符相同是不需要进行加一操作

三、本题解析所用的编程语言

c++