583. 两个字符串的删除操作
题目链接:https://leetcode.cn/problems/delete-operation-for-two-strings/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
0x3 今日学习的文章链接,或者视频链接
0x4 看完代码随想录之后的想法
- 求两个字符串的最长公共子序列长度,用字符串长度减去最长公共子序列长度就是要删除的个数
- 求两个字符串的最长公共子序列长度
- dp[i][j] 以A[i-1]、B[j-1]结尾的字符串的最长公共子序列长度为dp[i][j]
- if A[i-1] == B[j-1] dp[i][j] = dp[i-1][j-1] + 1
- if A[i-1] != B[j-1] dp[i][j] = max(dp[i][j-1], dp[i-1][j])
- dp = 0
0x5 今日收获,记录一下自己的学习时长
- 1h
72. 编辑距离
题目链接:https://leetcode.cn/problems/edit-distance/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
0x3 今日学习的文章链接,或者视频链接
0x4 看完代码随想录之后的想法
- dp[i][j] 表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]
- if (word1[i - 1] == word2[j - 1]) 那么说明不用任何编辑,dp[i][j] = dp[i - 1][j - 1]
- if (word1[i - 1] != word2[j - 1]) 增删改
- word1删除一个元素 dp[i][j] = dp[i - 1][j] + 1
- word2删除一个元素 dp[i][j] = dp[i][j - 1] + 1
- word2添加一个元素,相当于word1删除一个元素
- 替换元素,word1替换word1[i - 1],使其与word2[j - 1]相同,此时不用增删加元素。dp[i][j] = dp[i - 1][j - 1] + 1
- dp[i][0] = i dp[0][j] = j
0x5 今日收获,记录一下自己的学习时长
- 1.5h
总结
- 两个字符串的删除操作
- 编辑距离
复习
- day32
- 贪心
- 买卖股票的最佳时机II
- 所有的正区间之和
- 跳跃游戏
- 最大覆盖范围是否有终点
- 跳跃游戏II
- 下标到达当前最远覆盖范围都还没到终点,必须再走一步来增加覆盖范围 直到覆盖范围覆盖了终点
- 买卖股票的最佳时机II
- 贪心
待重点复习
72, 45