給你兩個單詞word1
和word2
,請你計算出將word1
轉換成word2
所使用的最少運算元 。
你可以對乙個單詞進行如下三種操作:
示例 1:
輸入:word1 = "horse", word2 = "ros"輸出:3解釋:horse -> rorse (將 'h' 替換為 'r')示例 2: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')
思路:
1、狀態定義:
dp[i][j]
表示word1
的前i
個字母轉換成word2
的前j
個字母所使用的最少操作。
2、狀態轉移:
i
指向word1
,j
指向word2
若當前字母相同,則dp[i][j] = dp[i - 1][j - 1]
;
否則取增刪替三個操作的最小值 + 1, 即:
dp[i][j] = min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1
。
**實現:
class solution
for (int j = 0; j <= len2; j++)
for (int i = 1; i <= len1; i++) else }}
return dp[len1][len2];
}}
72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...
72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...
72 編輯距離
題目 給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為...