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++