給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 。
你可以對乙個單詞進行如下三種操作:
插入乙個字元
刪除乙個字元
替換乙個字元
題目鏈結
示例1:
輸入: word1 = 「horse」, word2 = 「ros」示例2:輸出: 3
解釋:horse -> rorse (將 『h』 替換為 『r』)
rorse -> rose (刪除 『r』)
rose -> ros (刪除 『e』)
輸入: word1 = 「intention」, word2 = 「execution」一道典型的二維動態規劃題,每次可以插入、刪除或修改乙個字元。所以,列出動態規劃二維矩陣:專案#輸出: 5
解釋:intention -> inention (刪除 『t』)
inention -> enention (將 『i』 替換為 『e』)
enention -> exention (將 『n』 替換為 『x』)
exention -> exection (將 『n』 替換為 『c』)
exection -> execution (插入 『u』)
ros#
0123
h112
3o22
12r3
222s
4332
e544
3計算的過程中,我們可以推斷出狀態轉移方程如下:
當兩個字串最後乙個字元相同時:
dp[i][j] = 1 + min(dp[i-1][j] , dp[i][j-1],d[i-1][j-1]-1)
當兩個字元最後乙個字元不同時:
dp[i][j] = 1 + min(dp[i-1][j] , dp[i][j-1],d[i-1][j-1])
public
intmindistance
(string word1, string word2)
else}}
for(
int[
] row:dp) system.out.
println
(arrays.
tostring
(row));
return dp[n]
[m];
}
Leetcode 72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...
leetcode 72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...
LeetCode72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r rorse rose 刪除 r rose ...