leetcode 72 編輯距離

2021-10-18 01:39:53 字數 1511 閱讀 7421

題目:

這題其實可以用,動態規劃和遞迴來解

方法一:動態規劃 (自底向上)

題目中 針對三個條件

插入乙個字元

刪除乙個字元

替換乙個字元

我們可以具體化:

word1刪除最後乙個元素

word2刪除最後乙個元素

word1或者word2修改最後乙個元素和另外乙個字串元素相同

確認狀態: 首先 dp[i][j]代表著從word1 中前第i(包括i)個字元到word2中第j(包含j)個字元的最小運算元

狀態轉移:

當 word1【i】==word1【j】時,dp[i][j] =dp[i-1][j-1]也就是**

if

(word1[i-1]

==word2[j-1]

) dp[i]

[j]=dp[i-1]

[j-1];

//注意i代表第前i個元素,所以我們待比較下標是index=i-1

否則 經過上面的條件進行操作 (+1的含義),也就是**

dp[i]

[j]=

min(dp[i-1]

[j-1],

//修改word1或者word2中的最後乙個字元使得最後乙個字元相等

min(

dp[i-1]

[j],

//刪除word1的最後乙個字元

dp[i]

[j-1

]//刪除word2的最後乙個字元))

+1;//+1代表本次操作了一次(刪除,修改)

初始化:當乙個字元為空時,最小運算元,就是另外乙個字元的長度

所求答案:

dp[word1.size()][word2.size()];

**:

class

solution}}

}return dp[word1.

size()

][word2.

size()

];}}

;

遞迴寫法:自頂向下沒啥好說的,基本思路也是動態規劃中的動態轉移方程

**:

class

solution

public

:int

mindistance

(string word1, string word2)

};

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

LeetCode72 編輯距離

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