給定兩個單詞 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』)
思路:定義陣列dp[ ][ ],dp[i][j]表示s1前i個字元和s2前j個字元的編輯距離。當s1.c
hara
t(i−
1)==
s2.ch
arat
(j−1
)s1.charat(i-1) == s2.charat(j-1)
s1.cha
rat(
i−1)
==s2
.cha
rat(
j−1)
時,d p[
i][j
]=dp
[i−1
][j−
1]
dp[i][j] = dp[i-1][j-1]
dp[i][
j]=d
p[i−
1][j
−1],即把二者除了相同元素的字串變成相同串;當s1.c
hara
t(i−
1)!=
s2.ch
arat
(j−1
)s1.charat(i-1) != s2.charat(j-1)
s1.cha
rat(
i−1)
!=s2
.cha
rat(
j−1)
,考慮三種情況:
此時,dp[
i][j
]=mi
n(dp
[i−1
][j]
,dp[
i][j
−1],
dp[i
−1][
j−1]
)+
1dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
dp[i][
j]=m
in(d
p[i−
1][j
],dp
[i][
j−1]
,dp[
i−1]
[j−1
])+1
。把s1作為被轉換串,可以這麼理解:
**如下:
class
solution}}
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 ...