首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最长的公共子串错误

最长的公共子串错误
EN

Stack Overflow用户
提问于 2014-02-27 15:27:06
回答 1查看 164关注 0票数 3

到目前为止我已经做到了

代码语言:javascript
复制
function lcs(xstr, ystr)
        if xstr:len() == 0 or ystr:len() == 0 then
                return ""
        end
        x = xstr:sub(1,1)
        y = ystr:sub(1,1)
        xs = xstr:sub(2)
        ys = ystr:sub(2)
        if x == y then
                return x .. lcs(xs, ys)
        else
                l1 = lcs(xstr, ys)
                l2 = lcs(xs, ystr)
                if l1:len() > l2:len() then
                        return l1
                else
                        return l2
                end
        end
end

print(lcs("abcd", "bcd"))

不幸的是,它只打印"d“,而不像预期的那样打印"bcd”。对我来说,行"l2 = lcs(xs,ystr)“似乎没有被执行,因为如果我在开头添加调试打印,它就不会调用wit参数"bcd”和"bcd",但我确信在after语句开始后值是正常的。我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-27 15:54:53

您的xs变量是全局的

代码语言:javascript
复制
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)

第一行破坏了第二行使用的xs值。

将所有临时变量(x、y、xs、ys、l1、l2)设置为本地变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22072939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档