面試題 01 05 一次編輯(動態規劃)

2021-10-10 16:06:39 字數 1102 閱讀 5726

面試題 01.05. 一次編輯

字串有三種編輯操作:插入乙個字元、刪除乙個字元或者替換乙個字元。 給定兩個字串,編寫乙個函式判定它們是否只需要一次(或者零次)編輯。

示例 1:

輸入: 

first = "pale"

second = "ple"

輸出: true

示例 2:

輸入: 

first = "pales"

second = "pal"

輸出: false

方法一:

主要思路

只有乙個地方需要修改,那麼不妨定位到不同字元處。有以下兩種情況

(1)長度相同:leetcode 與 leetkode。

那麼我們需要找到 『c』 和 『k』,然後比較 『ode』 和 『ode』 是否相同。

(2)長度不同:leetcode 與 leetode。

我們發現 『c』 和 『o』 不相同,然後比較 『ode』 和 『ode』 是否相同。

class

solution

}return

true;}

}

方法二:動態規劃

如果2字元的長度差超過2可以直接返回false

當當前字元一致,則不用修改 dp[i][j] = dp[i-1][j-1];

如果不一樣,因為增和刪本質上,對first的增和對second的刪是乙個操作,而對first的刪和對second的增本質上是乙個操作

所以可以得到遞推:dp[i][j] = min(dp[i-1][j]+1, dp[i-1][j-1]+1,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]

<=1;

}}

面試題 01 05 一次編輯

字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。示例 1 輸入 first pale second ple 輸出 true 分情況討論 長度差超過2 肯定錯 len1 len2 可能是替換 len1 len2 是刪除,...

程式設計師面試金典 面試題01 05 一次編輯

本題可以轉化為求編輯距離。題目限定為可以插入 刪除 替換乙個字元,這種編輯距離稱為萊溫斯坦距離,同樣經常遇到的還有漢明距離等。字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。示例 1 輸入 first pale sec...

程式設計師面試金典 面試題 01 05 一次編輯

字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。示例 1 輸入 first pale second ple 輸出 true示例 2 輸入 first pales second pal 輸出 false根據字串長度差值判...