給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 。
你可以對乙個單詞進行如下三種操作:
本題目典型的動態規劃,動態規劃屬於十分難的演算法題目。
在完成動態規劃題目時,主要掌握三點即可——狀態表示、狀態轉移、狀態初始化。
首先是狀態表示。
很容易想出,定義狀態轉移矩陣 f[i
][j]
f[i][j]
f[i][j
],用於表示 word1 中前 i 個字元轉換為 word2 中前 j 個字元所需的最少運算元。
接下來是狀態轉移 (這一步十分困難)。
如果 wor
d1[i
]==w
ord2
[j
]word1[i] == word2[j]
word1[
i]==
word
2[j]
, 則有 f[i
][j]
=f[i
−1][
j−1]
f[i][j] = f[i - 1][j - 1]
f[i][j
]=f[
i−1]
[j−1
]。如果 wor
d1[i
]≠wo
rd2[
j]
word1[i] \neq word2[j]
word1[
i]̸
=wor
d2[j
],則會採取下面三種策略:
int mindistance(string word1, string word2)
return f[n][m];
}
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 ...