繁体   English   中英

最长的公共子序列实现-python

[英]Longest common subsequence implementation-python

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

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) 

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 []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM