計算字串的編輯距離

2021-10-05 06:20:34 字數 759 閱讀 7352

levenshtein 距離,又稱編輯距離,指的是兩個字串之間,由乙個轉換成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。

如bankcomm和bocomm的距離為3,只要將『o'改為』a'再增加『nk』,bocomm就和bankcomm相同。所以距離為3

利用動態規劃求解:

建立乙個二維陣列dp[m][n],m和n分別為字串a和字串b的長度+1。dp[i][j]的值表示a的前i個字元與b的前j個字元的距離。dp[i][j]的值是以下四種結果的最小值:

1.dp[i][j]=dp[i-1][j-1],此時已經知道a的前i-1個字元到b的前j-1個字元的距離且a[i]==b[j],不增加距離。

2.dp[i][j]=dp[i-1][j-1]+1,此時已經知道a的前i-1個字元到b的前j-1個字元的距離且a[i]!=b[j],需要修改a[i]或b[j],距離+1.

3.dp[i][j]=dp[i-1][j]+1,此時已經知道a的前i-1個字元到b的前j個字元的距離,那麼a的前i個字元到b的前j個字元就需要加上a的第i個字元,即距離+1

4.dp[i][j]=dp[i][j-1]+1,此時已經知道a的前i個字元到b的前j-1個字元的距離,那麼b的前j個字元到a的前i個字元就需要加上b的第j個字元,即距離+1

class stringdis

}return dp[x][y];

}};

二維陣列需要初始化第0行和第0列,表示空串到a和b的距離。

編輯字串距離

題目 題意 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另 乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪 除乙個字元。例如將kitten轉化成sitting sitten k s sittin ...

字串編輯距離

題目描述 給定乙個源串和目標串,能夠對源串進行如下操作 在給定位置上插入乙個字元 替換任意字元 刪除任意字元 寫乙個程式,返回最小運算元,使得對源串進行這些操作後等於目標串,源串和目標串的長度都小於2000。關於字串最短編輯距離的解題思路 給定相關資料的定義 mep i j 表示源字串source ...

字串編輯距離

給出兩個單詞word1和word2,寫乙個函式計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 1 插入乙個字元 2 刪除乙個字元 3 替換乙個字元 格式 輸入行輸入兩個字串 word1 和 word2,最後輸出將 word1 轉換為 word2的最少操作次數 樣例輸入 wor...