文章目錄
- 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];}
}
總結
暫無