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("スパ", "m")

[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 に答える