LeetCode 72 編輯距離

2021-10-04 19:47:22 字數 1315 閱讀 6624

給你兩個單詞 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[i][j] 代表 word1 到 i 位置轉換成 word2 到 j 位置需要最少步數

所以,當 word1[i] == word2[j],dp[i][j] = dp[i-1][j-1];

當 word1[i] != word2[j],dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1

其中,dp[i-1][j-1] 表示替換操作,dp[i-1][j] 表示刪除操作,dp[i][j-1] 表示插入操作。

注意,針對第一行,第一列要單獨考慮,我們引入 『』 下圖所示:

第一行,是 word1 為空變成 word2 最少步數,就是插入操作

第一列,是 word2 為空,需要的最少步數,就是刪除操作

class

solution

}return dp[n1]

[n2];}

}

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 ...