力扣)72 編輯距離

2021-10-02 21:55:10 字數 727 閱讀 7359

難度在於定義最優解的結構。

根據動態規劃思想容易定義出dp[i][j]表示word1的前i段與word2的前j段的編輯距離。

最難想到的是最優解的結構,即替換,刪除和插入三種操作可以分別用dp[i-1][j-1] +1,dp[i-1][j] +1和dp[i][j-1] +1表示。

dp[i][j] 代表 word1 到 i 位置轉換成 word2 到 j 位置需要最少步數

所以,當 word1[i] == word2[j],dp[i][j] = dp[i-1][j-1];

當 word1[i] != word2[j],dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1

其中,dp[i-1][j-1] 表示替換操作,dp[i-1][j] 表示刪除操作,dp[i][j-1] 表示插入操作。

/**

* 動態規劃

* 計算編輯距離

*/public int mindistance(string word1, string word2)

for(int j=0;j<=m2;j++)

for(int i=1;i<=m1;i++)else }}

return dp[m1][m2];

}

dp 力扣 72 編輯距離

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

72 編輯距離

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

72 編輯距離

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