繼續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...