1

我非常接近完成我的程序,但我遇到了一个小问题。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(“水疗中心”,“米”)

[0, "###", "#"]

fanlc2("猫", "汽车")

[2, "ca#, "ca#"]

fanlc2(“猫”,“lca”)

[2, "ca#", "#ca"]

fanlc2(“人类”,“黑猩猩”)

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

4

1 回答 1

1

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

if t1[0] > t2[0] or t1[0] == t2[0]:
    return [t1[0], '#'+t1[1], t1[2]]
return [t2[0], t2[1], '#'+t2[2]]
于 2012-09-24T19:29:00.730 回答