面試題 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根據字串長度差值判...