Java LeetCode 72. 編輯距離
給你兩個單詞 word1 和 word2,請你計算出將 word1 轉換成 word2 所使用的最少運算元 。
你可以對一個單詞進行如下三種操作:
插入一個字元
刪除一個字元
替換一個字元
示例 1:
輸入:word1 = “horse”, word2 = “ros”
輸出:3
解釋:
horse -> rorse (將 ‘h’ 替換為 ‘r’)
rorse -> rose (刪除 ‘r’)
rose -> ros (刪除 ‘e’)
動態規劃
如例子中dp[i][j]
dp[5][3] = 3;表示horse 和 ros轉換需要3步,, i和j不表示位置,表示長度
如果
當word1[i]和word2[j]相等的時候,轉換次數不變,也就是dp[i-1][j-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+1;i++){
dp[i][0]=i;
}
for(int i=0;i<n+1;i++){
dp[0][i]=i;
}
for(int i=1;i<m+1;i++){
for(int j=1;j<n+1;j++){
if(word1.charAt(i-1)==word2.charAt(j-1)){
dp[i][j]=dp[i-1][j-1];
}else{
dp[i][j]=Math.min(Math.min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i-1][j-1]+1);
}
}
}
return dp[m][n];
}
}
相關文章
- 【leetcode】72. Edit Distance 編輯距離計算LeetCode
- LeetCode72編輯距離LeetCode
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- 編輯距離及編輯距離演算法演算法
- 【DP】編輯距離
- 編輯距離演算法演算法
- 線性dp:編輯距離
- 902.最短編輯距離
- 動態規劃-編輯距離動態規劃
- Levenshtein:計算字串的編輯距離字串
- 面試程式碼題(華為)編輯距離面試
- LeetCode 461. 漢明距離LeetCode
- LeetCode 834 樹中距離之和LeetCode
- 45.LeetCode461. 漢明距離LeetCode
- leetcode-834. 樹中距離之和LeetCode
- 資料對齊-編輯距離演算法詳解(Levenshtein distance)演算法
- 單詞拼寫糾正-05-2452.力扣 距離字典兩次編輯距離以內的單詞力扣
- 演算法:編輯距離問題(動態規劃,詳細解答)演算法動態規劃
- 程式碼隨想錄演算法訓練營第51天 | 115.不同的子序列 、583. 兩個字串的刪除操作 、72. 編輯距離演算法字串
- leetcode-624.陣列列表中的最大距離LeetCode陣列
- 怎樣衡量兩個字串的相似度(編輯距離動態規劃求解)字串動態規劃
- 馬氏距離與歐氏距離
- 單詞拼寫糾正-04-161.力扣 相隔為 1 的編輯距離力扣
- 【Python】距離Python
- 【Leetcode 每日一題】1030. 距離順序排列矩陣單元格(水題,曼哈頓距離排序)LeetCode每日一題矩陣排序
- JavaScript 元素距離視窗頂部的距離JavaScript
- 曼哈頓距離與切比雪夫距離
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- Laravel 距離排序Laravel排序
- unit原子距離
- 餘弦距離
- 馬氏距離
- Hetao P2071 打字遊戲 題解 [ 綠 ] [ 最小生成樹 ] [ 動態規劃 ] [ 編輯距離 ]遊戲動態規劃
- JAVA計算兩經緯度間的距離Java
- 距離度量學習
- 曼哈頓距離與切比雪夫距離的互化
- 每日一道演算法題--leetcode 461--漢明距離--python演算法LeetCodePython