代码随想录算法训练营第五十五天|583.两个字符串的删除操作|72. 编辑距离

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

思想:首先考虑的是dp的定义,由前面的经验很容易想到正确的定义。然后是递归公式,对于值相同的情况,应该都知道dp[i][j] = dp[i-1][j-1],然后就是值不同的情况,分为三种,同时删除,删除word1,删除word2,其实同时删除包括在里面了可以不用写。其实最容易出错的地方是初始化,初始化的话最好画一个二维图,然后你可以通过这个二维图确定遍历顺序,也可以知道当其中一个字符串为空的时候,另一个字符串需要删除所有的字符才能相同。

代码随想录算法训练营第五十五天|583.两个字符串的删除操作|72. 编辑距离_第1张图片

 二、72. 编辑距离

思想:这题是在上面那题的基础上加了添加和修改两个操作,如果第一次看到应该很懵逼。其实删除操作和增加操作就是一个相反操作,所以我们只用考虑删除操作即可。然后对于值相同的情况dp[i][j] = dp[i-1][j-1],对于值不同的情况,就可以分为四种,上面那题的三种,还有一种是修改的操作,修改其实就是最后两个值不同你把它改相同了,所以操作数会加1,然后就是值相同的操作,即dp[i-1][j-1]+1,将删除的三种操作加上修改的一种操作取一个最小值即可。其中删除两个值那个操作可以去掉,因为被其它两种删除操作包含了。

代码随想录算法训练营第五十五天|583.两个字符串的删除操作|72. 编辑距离_第2张图片

 

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