Python 字符串 LCS 错误

标签 python string lcs

我即将完成我的程序,但我遇到了一个小问题。 I/O 应该看起来像这样:

I: fanlc2("human", "chimpanzee")
O: [4, 'h#man', '#h#m#an###']

但是我的,执行以下操作:

I: fanlc2("human", "chimpanzee")
O: [4, '#', '#h#']

有人可以编辑我的代码以便我得到正确的答案吗?我想不通。谢谢:

def fanlc2(S1, S2):
    if S1 == '' or S2 == '':
        return [0, S1, S2]
    if S1[0] == S2[0]:
        temp = fanlc2(S1[1:], S2[1:])
        return [temp[0]+1, S1[0]+temp[1], S2[0]+temp[2]]
    t1 = fanlc2(S1[1:], S2)
    t2 = fanlc2(S1, S2[1:])
    if t1[0] > t2[0] or t1[0] == t2[0]:
        return [t1[0], '#'+t1[1], t2[1]]
    return [t2[0], t1[1], '#'+t2[1]]

以下是程序应该返回的更多 I/O:

fanlc2("x", "y")

[0, '#', '#']

fanlc2("垃圾邮件", "")

[0, '####', '']

fanlc2("spa", "m")

[0,“###”,“#”]

fanlc2("猫", "汽车")

[2,“ca#,”ca#”]

fanlc2("猫", "lca")

[2,“ca#”,“#ca”]

fanlc2("人类", "黑猩猩")

[4,'h#man','#h#m#an###']

最佳答案

您刚刚在最后几行中混淆了一些变量/索引。尝试使用更具描述性的变量名称,将来可能会避免此问题。

if t1[0] > t2[0] or t1[0] == t2[0]:
    return [t1[0], '#'+t1[1], t1[2]]
return [t2[0], t2[1], '#'+t2[2]]

关于Python 字符串 LCS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571370/

相关文章:

算法 - 计算两个 DAG 的最长公共(public)子序列 (LCS)

arrays - ocaml lcs 没有像数组这样的对象

python - 时间这样写怎么写

python - 如何正确加入尾随或破折号开头的单词? - Python

Python:如何使 __Init__ 调用两种不同的参数方法?

string - Coldfusion 字符串删除最后一个逗号后的所有内容

c++ - 文本迭代,汇编与 C++

algorithm - 最长递增子序列算法中的节点结构(Jacobson & Vo)

python - 使用 gevent 修补的代码库是否应该使单元测试运行得更快?

Python如何获取调用函数(不仅仅是它的名字)?