代码随想录 day 46 不同的子序列 | 两个字符串的删除操作 | 编辑距离

不同的子序列

不同的子序列

解题思路

dp数组的含义是两个分别以i-1结尾和j-1结尾相同的子序列的长度。也可以看作是每次删除s字符串的步数。这道题需要注意的是当两个字符相等时,别忘记加上dp[i-1][j]的值,因为如果前面有相同的字符,我们需要把这个次数加入到dp数组中

知识点

动态规划

心得

比较难的题,但是能够理解每次遍历dp时是删除一个字符就很好做

两个字符串的删除操作

两个字符串的删除操作

解题思路

这道题目的dp数组含义还是一样,但是初始化有点不一样,因为dp数组存储的是需要删除的步数,所以dp[i][0] 和 dp[0][j] 的值应该分别为i 和 j。然后当两个字符相等时,就等于没有这两个字符串的时候,也就是dp[i - 1][j - 1]. 而不等于时,也需要分别比较两个字符的前一个字符的大小,根据题意选最少的就行。

知识点

动态规划

心得

相比于上一题,这道题目就比较直观了

编辑距离

编辑距离

解题思路

还是不变的思路,只不过这次添加了添加,删除和替换的操作,其实我们可以不必要分清这些操作怎么实现,只要当字符不相同时让步数加一就行。

知识点

动态规划

心得

主要不要被多出来的操作吓到就行

posted @ 2024-08-05 20:35  不进育碧不改名  阅读(60)  评论(0编辑  收藏  举报