給你兩個單詞 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.charat(i-1)等於word2.charat(j-1)的話,dp[i][j]==dp[i-1][j-1],否則取dp[i][j-1]、dp[i-1][j]、dp[i-1][j-1]三者中最小的乙個加1,具體**如下:
class
solution
//初始化
for(
int i=
0;i1;i++
)for
(int j=
0;j1;j++
)for
(int i=
1;i1;i++
)else}}
return dp[len1]
[len2];}
}
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 ...