Python程式:找出使兩個字串相等的最小刪除次數
假設我們有兩個小寫字串 s 和 t,現在考慮一個操作,我們可以刪除這兩個字串中的任意字元。我們必須找到使 s 和 t 相等的所需最小操作次數。
因此,如果輸入類似於 s = "pipe" t = "ripe",則輸出將為 2,因為我們可以從 s 中刪除 "p",從 t 中刪除 "r" 以使這兩個字串相同 "ipe"
為了解決這個問題,我們將遵循以下步驟:
- m := s 的長度
- n := t 的長度
- 定義一個函式 dp()。這將接收 i, j
- 如果 i 等於 m,則
- 返回 n - j
- 否則,如果 j 等於 n,則
- 返回 m - i
- 否則,
- 如果 s[i] 等於 t[j],則
- 返回 dp(i + 1, j + 1)
- 否則,
- 返回 1 + (dp(i + 1, j) 和 dp(i, j + 1) 的最小值)
- 如果 s[i] 等於 t[j],則
- 從主方法返回 dp(0, 0)
示例
讓我們看看下面的實現,以便更好地理解:
def solve(s, t): m = len(s) n = len(t) def dp(i, j): if i == m: return n - j elif j == n: return m - i else: if s[i] == t[j]: return dp(i + 1, j + 1) else: return 1 + min(dp(i + 1, j), dp(i, j + 1)) return dp(0, 0) s = "pipe" t = "ripe" print(solve(s, t))
輸入
"pipe", "ripe"
輸出
2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP