在 Python 中从两个字符串执行前缀压缩的程序

假设我们有两个字符串 s 和 t(都包含小写英文字母)。我们必须找到一个大小为 3 的对的列表,其中每一对都采用这种形式 (l, k),这里 k 是一个字符串,l 是它的长度。现在在这三对中,第一个包含 s 和 t 的子串,这是这两个字符串的最长公共前缀 p,然后 s 的剩余部分是 s',t 的剩余部分是 t'。所以最终列表将类似于 [(p 的长度, p), (s', s' 的长度), (t', t' 的长度)]。

因此,如果输入类似于 s = "science" t = "school",那么输出将是 [(2, 'sc'), (5, 'ience'), (4, 'hool')]

示例

让我们看看以下实现以获得更好的理解 -

def solve(s, t):

   lcp = ''

   for i in range(min(len(s), len(t))):

      if s[i] == t[i]:

         lcp += s[i]

   s_rem = s[len(lcp):]

   t_rem = t[len(lcp):]

   return [(len(lcp), lcp), (len(s_rem), s_rem), (len(t_rem), t_rem)]

s = "science"

t = "school"

print(solve(s, t))

输入

"science", "school"
输出结果
[(2, 'sc'), (5, 'ience'), (4, 'hool')]

以上是 在 Python 中从两个字符串执行前缀压缩的程序 的全部内容, 来源链接: utcz.com/z/361788.html

回到顶部