Längster häufiger Substring-Fehler
-
23-12-2019 - |
Frage
Ich habe das bisher gemacht
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"))
Leider wird nur „d“ und nicht wie erwartet „bcd“ ausgegeben.Für mich sieht es so aus, als ob die Zeile „l2 = lcs(xs, ystr)“ nicht ausgeführt wurde, denn wenn ich am Anfang debug print hinzufüge, wird gedruckt, dass die Funktion nicht mit den Argumenten „bcd“ und „bcd“ aufgerufen wurde. aber ich bin sicher, dass die Werte nach Beginn der else-Anweisung in Ordnung sind.Ich würde mich über jede Hilfe freuen.
Lösung
Dein xs
Variable ist global
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)
Die erste Zeile ist beschädigt xs
Wert, der von der zweiten Zeile verwendet wird.
Machen Sie alle Ihre temporären Variablen (x, y, xs, ys, l1, l2) lokal.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow