mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
Update
This commit is contained in:
@@ -12,9 +12,9 @@
|
||||
|
||||
示例:
|
||||
|
||||
输入: "sea", "eat"
|
||||
输出: 2
|
||||
解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
|
||||
* 输入: "sea", "eat"
|
||||
* 输出: 2
|
||||
* 解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
|
||||
|
||||
## 思路
|
||||
|
||||
@@ -47,7 +47,10 @@ dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word
|
||||
|
||||
那最后当然是取最小值,所以当word1[i - 1] 与 word2[j - 1]不相同的时候,递推公式:dp[i][j] = min({dp[i - 1][j - 1] + 2, dp[i - 1][j] + 1, dp[i][j - 1] + 1});
|
||||
|
||||
因为dp[i - 1][j - 1] + 1等于 dp[i - 1][j] 或 dp[i][j - 1],所以递推公式可简化为:dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
|
||||
|
||||
因为 dp[i][j - 1] + 1 = dp[i - 1][j - 1] + 2,所以递推公式可简化为:dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
|
||||
|
||||
这里可能不少录友有点迷糊,从字面上理解 就是 当 同时删word1[i - 1]和word2[j - 1],dp[i][j-1] 本来就不考虑 word2[j - 1]了,那么我在删 word1[i - 1],是不是就达到两个元素都删除的效果,即 dp[i][j-1] + 1。
|
||||
|
||||
|
||||
3. dp数组如何初始化
|
||||
|
||||
Reference in New Issue
Block a user