在 Python 中檢查兩個字串之間的編輯距離是否為 1
假設我們有兩個字串 s 和 t。我們需要檢查 s 和 t 之間的編輯距離是否正好為 1。這裡兩個字串之間的編輯是指以下三種情況中的任何一種:
- 插入一個字元
- 刪除一個字元
- 替換一個字元
因此,如果輸入類似於 s = "hello" t = "heillo",則輸出將為 True,因為我們需要在 s 中插入一個字元才能得到 t。
為了解決這個問題,我們將遵循以下步驟:
- 如果 |s 的大小 - t 的大小| > 1,則
- 返回 false
- edit_dist_cnt := 0,i := 0,j := 0
- 當 i < s 的大小 且 j < t 的大小 時,執行以下操作:
- 如果 s[i] 與 t[j] 不相同,則
- 如果 edit_dist_cnt 等於 1,則
- 返回 false
- 如果 s 的大小 > t 的大小,則
- i := i + 1
- 否則,如果 s 的大小 < t 的大小,則
- j := j + 1
- 否則,
- i := i + 1,j := j + 1
- edit_dist_cnt := edit_dist_cnt + 1
- 如果 edit_dist_cnt 等於 1,則
- 否則,
- i := i + 1,j := j + 1
- 如果 s[i] 與 t[j] 不相同,則
- 如果 i < s 的大小 或 j < t 的大小,則
- edit_dist_cnt := edit_dist_cnt + 1
- 當 edit_dist_cnt 等於 1 時返回 true,否則返回 false
示例
讓我們看看下面的實現,以便更好地理解:
def solve(s, t): if abs(len(s) - len(t)) > 1: return false edit_dist_cnt = 0 i = 0 j = 0 while i < len(s) and j < len(t): if s[i] != t[j]: if edit_dist_cnt == 1: return false if len(s) > len(t): i += 1 elif len(s) < len(t): j += 1 else: i += 1 j += 1 edit_dist_cnt +=1 else: i += 1 j += 1 if i < len(s) or j < len(t): edit_dist_cnt += 1 return edit_dist_cnt == 1 s = "hello" t = "heillo" print(solve(s, t))
輸入
"hello", "heillo"
輸出
True
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP