leetcode 編輯距離 動態規劃

2021-10-03 05:58:11 字數 1033 閱讀 7966

給定兩個單詞 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')

題解:編輯距離是典型的動態規劃問題。

首先,我們考慮對於s1的每乙個字元,有四種選擇,什麼都不做,替換,刪除,新增;

假設dp[i][j]表示第乙個字串的前i個字元和s2的前j個字元變成相同所需要的最少操作次數。

if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1];

else

dp[i][j]=min;

9for(int i=1;i<=n;++i) dp[i][0]=i;

10for(int j=1;j<=m;++j) dp[0][j]=j;

1112

for(int i=1;i<=n;++i)

13for(int j=1;j<=m;++j)14

20return

dp[n][m];21}

22 };

c++

Edit Distance編輯距離與動態規劃

編輯距離是指將乙個字串轉化為另外乙個字串,需要的最少的編輯操作次數,這些操作包括增加 刪除或者替換某個字元。可以看出,編輯距離越大,說明兩個字串的相似度越小 相反,編輯距離越小,說明這兩個字串的相似程度越大。兩個字串的編輯距離為0則說明這兩個字串相同。編輯距離的計算方式比較多,比較著名的有萊文斯坦距...

LeetCode動態規劃 72編輯距離

給你兩個單詞 word1 和 word2,請你計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 ...

leetcode 72 編輯距離 動態規劃

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...