本文主要是介绍【算法刷题day55】Leetcode:583. 两个字符串的删除操作、72. 编辑距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Leetcode 583. 两个字符串的删除操作
- 解题思路
- 代码
- 总结
- Leetcode 72. 编辑距离
- 解题思路
- 代码
- 总结
草稿图网站
java的Deque
Leetcode 583. 两个字符串的删除操作
题目:583. 两个字符串的删除操作
解析:代码随想录解析
解题思路
dp数组的含义是,从word1从0到i-1,word2从0到j-1匹配上最少需要删除多少个字符
代码
class Solution {public int minDistance(String word1, String word2) {int m = word1.length();int n = word2.length();int [][]dp = new int[m+1][n+1];for (int i = 0; i <= m; i++)dp[i][0] = i;for (int j = 0; j <= n; j++)dp[0][j] = j;for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (word1.charAt(i-1) == word2.charAt(j-1))dp[i][j] = dp[i-1][j-1];elsedp[i][j] = Math.min(dp[i][j-1] + 1 , Math.min(dp[i-1][j] + 1, dp[i-1][j-1] + 2));}}return dp[m][n];}
}
总结
暂无
Leetcode 72. 编辑距离
题目:72. 编辑距离
解析:代码随想录解析
解题思路
和上面那题的区别是,改了一个dp[i-1][i-1] + 1,因为可以修改,而上一题只能删除两个
代码
class Solution {public int minDistance(String word1, String word2) {int m = word1.length();int n = word2.length();int [][]dp = new int[m+1][n+1];for (int i = 0; i <= m; i++)dp[i][0] = i;for (int j = 0; j <= n; j++)dp[0][j] = j;for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (word1.charAt(i-1) == word2.charAt(j-1))dp[i][j] = dp[i-1][j-1];elsedp[i][j] = Math.min(dp[i-1][j], Math.min(dp[i][j-1], dp[i-1][j-1])) + 1;}}return dp[m][n];}
}
总结
暂无
这篇关于【算法刷题day55】Leetcode:583. 两个字符串的删除操作、72. 编辑距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!