LeetCode 72 編輯距離c

2021-10-12 20:36:55 字數 1154 閱讀 8208

繼續dp入門之旅

雖然是二維dp的基礎題,但在思路已經白嫖的情況下還是很久才理解實在是太菜了

當我們發現word1[i] == word2[j] 時,這時候經過dp[i - 1][j - 1]次操作,word1的前i-1個字元轉化成word2的1前j-1個字元,並且無需再進行任何操作

即dp[i][j] = dp[i - 1][j - 1]

當我們發現word[i] != word2[j]時,有三種策略

刪除字元

是在dp[i - 1][j]即word1的前i-1個字元已經轉化成word2的前j個字元的情況下,刪除word1[i]

dp[i] [j] = dp[i - 1] [j] + 1;增加字元

是在dp[i][j-1]即word1的前i個字元已經轉化成word2的前j-1個字元的情況下,增加word1[i]=word[j]

dp[i] [j] = dp[i] [j - 1] + 1;改變字元

是在dp[i - 1][j - 1]即word1的前i-1個字元已經轉化成word2的前j-1個字元的情況下,改變word1[i]=word[j]

即dp[i] [j] = dp[i - 1] [j - 1] + 1;**

綜上,dp方程為

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] [j - 1],dp[[i - 1] [j]) + 1;

得到**

class solution 

return dp[wordlen1]

[wordlen2];}

};

現在只能勉勉強強寫出dp,優化子結構還得繼續學習。

LeetCode 72 編輯距離 C

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

Leetcode 72 編輯距離

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

leetcode 72 編輯距離

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