代码随想录训练营Day56动态规划part16|583. 两个字符串的删除操作|72. 编辑距离|编辑距离总结篇

583.两个字符串的删除操作

  • 感觉很难,没有什么想法
  • 编辑距离类型题目,仅有删除操作,与上题不同的是,两个数组都可以执行删除操作
  • 二维dp含义:dp[i][j]以i-1结尾的word1和以j-1结尾的word2,为了让这两个字符串相同的最少操作次数
  • 递推公式(从什么方向推出):
    • 当前元素相同(无需删除),考不考虑该元素的删除操作不受影响,dp[i][j] = dp[i-1][j-1]
    • 当前元素不同,1-删除word1;2-删除word2;3-都删了;dp[i][j] = min(dp[i-1][j]+1, min(dp[i][j-1]+1, dp[i-1][j-1]+2))
  • 初始化:由三个方向推导,因此第一行第一列都要初始化
  • 另外思路,寻找最长公共子序列

72.编辑距离

  • 前面都是在删除,这题中还加入了替换和增加
  • 操作word1和word2是一样的,混合操作也是可以的
  • 还是二维数组,数组定义方式同上
  • 删除、添加操作在递推公式里面操作的表达方式相同,递推公式不变;不同的是替换操作,上一题中存在两个字符串都删除的情况,本题中不需要都删除了,只要替换其中一个就可以了,因此是dp[i-1][j-1]+1

编辑距离总结

  • 判断子序列:只需要考虑其中一个字符串的删除情况
  • 不同的子序列:也只需要考虑其中一个字符串的删除情况,但是递推公式要注意,递推公式要情况数值累加***(不太清楚)***
  • 两个字符串的删除操作:两个字符串都可以进行删除情况,分别删除和同时删除
  • 编辑距离:两个字符串都可以进行删除、增加、替换操作,其中删除和增加在递推公式表达上一样,上一题的两个字符串同时删除被本题的字符串替换替代

你可能感兴趣的:(动态规划,算法)