72 Edit Distance 編輯距離

2021-09-29 07:02:22 字數 701 閱讀 8315

如題屬於字串匹配型別,需要計算出最少的變換次數使得字串匹配,那麼這個問題一看就感覺是dp。那麼關鍵的狀態轉移過程怎麼寫呢。老辦法,看過我經典動態規劃子串與子串行一和經典動態規劃子串與子串行二的同學應該很熟悉了,關於字串問題,我們從後往前考慮。我們定義dp[ i ][ j ]代表word1[0, i) 和 word2[0, j)注意這裡是不包含 i 和 j 的。那麼dp[ i ][ j ]怎麼轉換呢。

if(word1[ i - 1] == word2[ j -1 ] )

dp[ i ][ j ] = dp[ i - 1 ][ j - 1 ];

else

dp[ i ][ j ] = min(dp[ i - 1 ][ j - 1 ] , min(dp[ i - 1][ j ], dp[ i ][ j - 1 ] ) ) + 1

至此轉移方程已經出來,但是這裡還有乙個注意點,就是dp陣列的初始化問題,我們直接上**,小夥伴們考慮下,dp陣列的初始化應該怎麼寫。

class

solution}}

return dp[m]

[n];}}

;

好了 上面兩個for迴圈用於初始化,我可能表達的不是很好,但是小夥伴看過**應該立馬就能get到我的點。

Edit Distance 編輯距離

編輯距離是一道經典的動態規劃 dynamic programing 問題。下面將詳細地介紹解法。我們先定義一下cache i j 表示,要將word1 0.i 1 轉化成word2 0.j 1 的最小步驟。比如,我們的word1 aeee world2 adef a def aeee 我們先來考慮一...

編輯距離 Edit distance

插入乙個字元,例如 fj fxj 刪除乙個字元,例如 fxj fj 替換乙個字元,例如 jxj fyj 用分治的思想解決比較簡單,將複雜的問題分解成相似的子問題 假設字串 a,共 m 位,從a 1 到a m 字串 b,共 n 位,從b 1 到b n d i j 表示字串a 1 a i 轉換為b 1 ...

編輯距離(Edit Distance)

edit distance 1000 ms 65535 kb 568 2526 設a 和b 是2 個字串。要用最少的字元操作將字串a 轉換為字串b。這裡所說的字元操作包括 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元。將字串a變換為字串b 所用的最少字元運算元稱為字串a到b 的編...