Das Problem, das ich auf mich arbeiten, ist hier: http://practiceit.cs.washington.edu/problem/view/cs2/sections/recursivebacktracking/longestCommonSubsequencelängste gemeinsame Teilfolge java (rekursiv)
im Grunde sind wir zwei Strings gegeben und wir sind die längste gemeinsame Teilfolge zu finden angefordert. Ich habe online nach Lösungen gesucht und diese mit meiner eigenen Lösung verglichen. In meinem Code konnte ich keine Fehler finden. Ich frage mich, warum es immer noch nicht funktioniert.
Und auch, wurde ich gebeten, dieses Problem zu lösen, indem rekursive Methoden
Hier ist mein Code:
public static String longestCommonSubsequence(String a, String b){
if(a.isEmpty() || b.isEmpty()){
return "";
}
if (a.substring(a.length() - 1).equals(b.substring(b.length() - 1))){
return longestCommonSubsequence(a.substring(0, a.length() - 1), b.substring(0, b.length()
- 1)) + a.substring(a.length() - 1);
} else {
String first = longestCommonSubsequence(a, b.substring(b.length() - 1));
String second = longestCommonSubsequence(a.substring(a.length() - 1), b);
if(first.length() > second.length()){
return first;
}
return second;
}
}
Und hier sind die alle Testfälle:
Anruf Rückgabewert
"ABCDEFG", "BGCEHAF" "BCEF"
"sie verkauft", "Muscheln" "sesells"
"12345", "54321 21 54321" "123"
"supercilious Lehrer", "köstlich Pfirsich" "ecious jedes"
" Marty“, "Helene" ""
"", "Joe" ""
"Suzy", "" ""
"ACGGTGTCGTGCTA", "CGTTCGGCTATCGTACGT" "CGGTTCGTGT"
mit meinem Code habe ich StackOverFlow für alle Testfälle.
Es kann funktionieren. Der Vorteil der Verwendung einer DP-basierten Lösung ist die Laufzeit. – iNan
Aber das Ergebnis, das ich bekomme, ist nur eine leere Zeichenfolge. Ich habe versucht, zu debuggen und bemerkte, dass die Zeile 'String first = am längstenCommonSubsequence (a, bstring (1))' weiterläuft und die Buchstaben von String b abschneidet, bis sie leer sind. Und dann wird ein leerer String zurückgegeben. – Amber
Mögliches Duplikat von [Wie kann ich Zeichenketten in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – azurefrog