給你兩個單詞 word1 和 word2,請你計算出將 word1 轉換成 word2 所使用的最少運算元 。
你可以對乙個單詞進行如下三種操作:
插入乙個字元
刪除乙個字元
替換乙個字元
示例 1:
輸入:word1 = "horse", word2 = "ros"
輸出:3
解釋:horse -> rorse (將 'h' 替換為 'r')
rorse -> rose (刪除 'r')
rose -> ros (刪除 'e')
示例 2:
輸入:word1 = "intention", word2 = "execution"
輸出:5
解釋:intention -> inention (刪除 't')
inention -> enention (將 'i' 替換為 'e')
enention -> exention (將 'n' 替換為 'x')
exention -> exection (將 'n' 替換為 'c')
exection -> execution (插入 'u')
初始化空字串轉換的次數: ·
『』hor
se『』0
1234
5r1o
2s3轉換的路徑有3條:增、刪、替換。其實增、刪是相同的,都是通過在word1和去掉最後1個字元的word2(或去掉最後1個字元的word1和word2)基礎上變化來。替換是在均去掉最後1個字元的2個word上變化而來,變化的次數都+1
如果當前2個word對應的字元相同,那麼不做任何變化,變化次數就是2個word均去掉最後1個字元的變化次數
時間》42.39%
空間》9.82%
class
solution
:def
mindistance
(self, word1:
str, word2:
str)
->
int:
dp =
[[i for i in
range
(j, j +
len(word1)+1
)]for j in
range
(len
(word2)+1
)]for i in
range(1
,len
(word2)+1
):for j in
range(1
,len
(word1)+1
):if word1[j -1]
== word2[i -1]
: dp[i]
[j]= dp[i -1]
[j -1]
else
: dp[i]
[j]=
min(dp[i -1]
[j]+
1, dp[i]
[j -1]
+1, dp[i -1]
[j -1]
+1)return dp[-1
][-1
]
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 ...