Leeres Ergebnis in einem rekursiven Java-Aufruf
Ich arbeite an folgendemCodingBat Problem:
Berechnen Sie eine Zeichenfolge, die ein einzelnes Klammerpaar enthält, rekursiv eine neue Zeichenfolge, die nur aus der Klammer und ihrem Inhalt besteht, sodass "xyz (abc) 123" "(abc)" ergibt.
parenBit("xyz(abc)123") → "(abc)"
parenBit("x(hello)") → "(hello)"
parenBit("(xy)1") → "(xy)"
Ich habe versucht, es so zu lösen:
import java.util.LinkedList;
import java.util.List;
public class ParenBit {
public static void main(String arg[]) {
ParenBit p = new ParenBit();
p.solve(arg[0], '(', "");
System.out.println(p.finalResult.toString());
}
private List<String> finalResult = new LinkedList<String>();
private boolean solve(String s, char c, String result) {
if (s.length() == 0)
return false;
char f = s.charAt(0);
if (f == '(') {
boolean b = solve(s.substring(1), ')', result);
if (b) {
result += f + "";
}
if (f == c)
return true;
} else if (f == ')') {
if (c == f) {
result += f + "";
finalResult.add(result);
solve(s.substring(1), '(', "");
return true;
}
} else {
if (c == ')') {
boolean b = solve(s.substring(1), ')', result);
if (b) {
result += f + "";
}
} else if (c == '(') {
return solve(s.substring(1), '(', result);
}
}
return false;
}
}
Wenn ich es mit diesem Eingang aufgerufen habe:
wow (Abschlussarbeit)
Ich erhalte leere Ergebnisse. Wie kann ich das beheben?