가장 긴 공통 하위 문자열 버그
-
23-12-2019 - |
문제
나는 지금까지 이것을 지금까지 만들었습니다
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"가 아닌 "D"를 인쇄합니다.나를 위해 "L2= LCS (XS, YSTR)"라인이 실행되지 않는 것처럼 보입니다. 처음에는 디버그 인쇄를 추가하면 FIT 인수 "BCD"및 "BCD"라고 불리지 않은 인쇄물을 인쇄합니다.그러나 나는 다른 문장의 시작 후에 가치가 괜찮을 것입니다. 어떤 도움을 주셔서 감사합니다.
해결책
xs
변수는 전역
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)
.
첫 번째 줄이 두 번째 줄에서 사용되는 xs
값을 손상시킵니다.
임시 변수 (x, y, xs, ys, l1, l2) 로컬로 인정하십시오.
제휴하지 않습니다 StackOverflow