文章目录
- 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];}
}
总结
暂无