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
广告