72. 編輯距離
給你兩個單詞 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')
0 <= word1.length, word2.length <= 500
word1 和 word2 由小寫英文本母組成
抄一下官方題解。最關鍵的還是分析狀態轉移的關係。
class solution// dp 陣列
int d = new int[n + 1][m + 1];
// 邊界狀態初始化
for (int i = 0; i < n + 1; i++)
for (int j = 0; j < m + 1; j++)
// 計算所有 dp 值
for (int i = 1; i < n + 1; i++)
d[i][j] = math.min(add, math.min(del, alter));}}
return d[n][m];
}}
動態規劃 編輯距離
1.實踐題目 編輯距離 2.問題描述 設a和b是2個字串。要用最少的字元操作將字串a轉換為字串b。這裡所說的字元操作包括 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元。將字串a變換為字串b所用的最少字元運算元稱為字串a到 b的編輯距離,記為d a,b 對於給定的字串a和字串b,計...
動態規劃 編輯距離
給定兩個序列x和y,求從乙個序列到另乙個序列所需變換的最小次數,這裡的變換包括刪除,新增和替換,每次只對乙個元素進行操作。演算法序言 這個題目有點像之前寫的最長公共子串行問題,也是用動態規劃的演算法。能夠應用動態規劃的題目有乙個特點就是具有最優子結構,就是整個問題的最優解會包含子問題的最優解,那麼我...
動態規劃 編輯距離
將乙個字串變為另乙個字串最小操作次數,您對單詞允許以下3種操作 a 插入字元 b 刪除字元 c 替換字元 例如 a horse 變成 b ros 想法 coding utf 8 def char array replace array1,array2 row len array1 col len a...