給你兩個單詞 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[0,i) 修改為 word2[0,j)所需的最小操作次數
初始化:
初始化dp[i][0]與dp[0][i]: 修改為空字串的最小操作為子串的長度
for
(int i =
1; i <= len1; i++
)for
(int i =
1; i <= len2; i++
)
狀態計算:
如果子串的新增字元相等說明新增字元不改變修改的操作次數
if
(word1.
charat
(i -1)
== word2.
charat
(j -1)
)
如果不相等則有三種操作
dp[i]
[j]= math.
min(dp[i -1]
[j -1]
, math.
min(dp[i -1]
[j], dp[i]
[j -1]
))+1
;
完整**如下:
class
solution
for(
int i =
1; i <= len2; i++
)for
(int i =
1; i <= len1; 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 ...