This commit is contained in:
programmercarl
2023-01-06 12:36:38 +08:00
parent bbbb3aed22
commit 98ceaa93b7
26 changed files with 134 additions and 83 deletions

View File

@@ -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数组如何初始化