LintCode 編輯距離

2021-08-21 10:11:04 字數 639 閱讀 8301

你總共三種操作方法:

返回 3 思路

使用dp, 先定義狀態 f(i)(j) 單詞1 的前i個 跟 單詞2 的前j個 的最短編輯距離。如果 a[i] == b[j] , 那麼f(i,j) = f(i-1,j-1)。

然後,再看有三種狀態:

1. 增加乙個 : 等價於 f(i, j-1)

2. 刪除乙個 : 等價於 f(i-1, j)

3. 修改乙個 : 等價於 f(i-1, j-1)

那麼狀態轉移方程就很顯而易見了吧:

if a[i] == b[j] , f (i, j) = f(i-1,j-1) ,

else f (i, j) = min(  f(i ,j-1) , f(i-1,j-1) ,f(i-1,j)  ) + 1.

**:

public int mindistance(string word1, string word2) 

for (int j = 0; j <= word2.length(); j++)

for (int i = 1; i <= word1.length() ; i++) else }}

return dp[word1.length()][word2.length()];

}

lintcode練習 119 編輯距離

給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 給出 work1 mart 和 work2 karma 返回 3 當i 0時,dp 0,j j,j 0.len word2 表示word2需要刪除j位來使其與word1相同為空 同理當j 0,...

Lintcode 008 編輯距離)

2016 08 29 給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 樣例 給出 work1 mart 和 work2 karma 返回 3 標籤 動態規劃 解題 此題為典型的動態規劃問題,可以按照一般解題思路解決。首先定義這樣乙個函式 e...

lintcode 640 一次編輯距離

在s的任意位置插入乙個字元 刪除s中的任意乙個字元 將s中的任意字元替換成其他字元 樣例例1 輸入 s adb t adb 輸出 true例2 輸入 s ab t ab 輸出 false 解釋 s t 所以他們不相差一次編輯的距離class solution if flag 1 return fal...