用 Python 编写程序,查找两个给定字符串的公共特殊子字符串的大小
pythonserver side programmingprogramming更新于 2025/12/18 2:20:17
假设我们有两个字符串 s1 和 s2。我们必须找到最长字符串 s3 的大小,它是 s1 和 s2 的特殊子字符串。
如果字符串 x 可以通过从 y 中删除 0 个或更多字符来生成,我们可以说字符串 x 是另一个字符串 y 的特殊子字符串。
因此,如果输入像 s1 = 'pineapple' s2 = 'people',则输出将为 5,因为特殊子字符串为 'peple',大小为 5。
为了解决这个问题,我们将遵循以下步骤 −
- prev := 一个新的字典,其中如果某个键不存在,则返回 0
- 对于 i,范围从 0 到 s1 - 1 的大小,执行
- cur := 一个新的字典,其中如果某个键不存在,则返回 0
- 对于 j,范围从 0 到 s2- 1 的大小,执行
- 当 s1[i] 与 s2[j] 相同时,cur[j] := prev[j - 1] + 1,否则 cur[j -1] 和 prev[j] 中的最大值
- prev := cur
- 返回 prev[s2 的大小 -1]
示例
让我们看看下面的实现以便更好地理解 −
from collections import defaultdict def solve(s1, s2): prev = defaultdict(int) for i in range(len(s1)): cur = defaultdict(int) for j in range(len(s2)): cur[j] = prev[j - 1] + 1 if s1[i] == s2[j] else max(cur[j - 1], prev[j]) prev = cur return prev[len(s2)-1] s1 = 'pineapple' s2 = 'people' print(solve(s1, s2))
输入
'pineapple', 'people'
输出
5
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

