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