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