leetcode 72 編輯距離

2021-10-02 15:21:38 字數 1791 閱讀 4675

給定兩個單詞 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 ...