leetCode 72 編輯距離

2021-10-10 21:13:22 字數 1545 閱讀 4809

給你兩個單詞 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'

)

狀態設定:

dp[i][j]表示word1[0,i) 修改為 word2[0,j)所需的最小操作次數

初始化:

初始化dp[i][0]與dp[0][i]: 修改為空字串的最小操作為子串的長度

for

(int i =

1; i <= len1; i++

)for

(int i =

1; i <= len2; i++

)

狀態計算:

如果子串的新增字元相等說明新增字元不改變修改的操作次數

if

(word1.

charat

(i -1)

== word2.

charat

(j -1)

)

如果不相等則有三種操作

dp[i]

[j]= math.

min(dp[i -1]

[j -1]

, math.

min(dp[i -1]

[j], dp[i]

[j -1]

))+1

;

完整**如下:

class

solution

for(

int i =

1; i <= len2; i++

)for

(int i =

1; i <= len1; i++

)else}}

return dp[len1]

[len2];}

}

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