edit distance 編輯距離

2021-10-06 00:15:27 字數 920 閱讀 2874

題目描述:

給定兩個單詞word1和word2,請計算將word1轉換為word2至少需要多少步操作。

你可以對乙個單詞執行以下3種操作:

a)在單詞中插入乙個字元

b)刪除單詞中的乙個字元

c)替換單詞中的乙個字元

解題思路:

f(i,j):word1的前i個字元於word2的前j個字元的編輯距離

狀態遞推:

f(i,j) = min

上式表示從刪除,增加和替換操作中選擇乙個最小運算元

f(i-1,j): w1[1,…,i-1]於w2[1,…,j]的編輯距離,刪除w1[i]的字元—>f(i,j)

f(i,j-1): w1[1,…,i]於w2[1,…,j-1]的編輯距離,增加乙個字元—>f(i,j)

f(i-1,j-1): w1[1,…,i-1]於w2[1,…,j-1]的編輯距離,如果w1[i]與w2[j]相同,

不做任何操作,編輯距離不變,如果w1[i]與w2[j]不同,替換w1[i]的字元為w2[j]—>f(i,j)

初始化:

初始化一定要是確定的值,如果這裡不加入空串,初始值無法確定

f(i,0) = i :word與空串的編輯距離,刪除操作

f(0,i) = i :空串與word的編輯距離,增加操作

返回結果:f(m,n)

public

class

solution

for(

int i =

0; i <= col; i++

)for

(int i =

1; i <= row; i++)}

return mindis[row]

[col];}

}

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 的編...