最常见的子序列实现-python

时间:2014-09-19 09:28:55

标签: python lcs

我已按照此video中的说明实施了最长的常见子序列问题。它只是执行第一组代码并生成一个空列表。这个实现有什么问题?

def lcs_recursive(xlist,ylist):
    if not xlist or ylist:
        return []
    x,xs,y,ys, = xlist[0],xlist[1:],ylist[0],ylist[1:]
    if x == y:
        return [x] + lcs_recursive(xs,ys)
    else:
        return max(lcs_recursive(xlist,ys),lcs_recursive(xs,ylist),key=len)



s1 = 'abc'
s2 = 'aeb'

print lcs_recursive(s1,s2) 

1 个答案:

答案 0 :(得分:3)

if not xlist or ylist:将评估为if (not xlist) or (ylist),因此如果您将Truthy(如非空列表)传递给ylist,它将始终评估为True。你可能想要:

if not xlist or not ylist:
    return []

或者你可以使用:

if not all([xlist, ylist]):
    return []