Ich möchte testen, ob eine Eingabe-Zeichenfolge ausgeglichen ist. Es wäre ausgewogen, wenn es eine passende öffnende und schließende Klammer, Klammer oder Klammer gibt.
%Vor%Ich habe Probleme zu entscheiden, was ich tun soll. Sollte ich jede öffnende oder schließende Klammer, Klammer oder Klammer in einen Stapel stecken, dann herausspringen? Wenn ich sie herausbringe, wie hilft mir das wirklich?
1) Für jede öffnende Klammer: { [ (
verschiebe es zum Stapel.
2) Für jede schließende Klammer: } ] )
pop vom Stapel und überprüfe, ob die Art der Klammer übereinstimmt. Wenn nicht false
;
d. h. Das aktuelle Symbol in String ist }
. Wenn es aus dem Stapel gepackt wird, gibt es noch etwas von {
und dann return false
sofort.
3) Wenn Zeilenende und Stapel nicht leer sind, geben Sie false
zurück, andernfalls true
.
Ja, ein Stapel ist eine geeignete Wahl für die Aufgabe, oder Sie könnten eine rekursive Funktion verwenden. Wenn Sie einen Stapel verwenden, ist die Idee, dass Sie jede öffnende Klammer auf den Stapel schieben. Wenn Sie auf eine schließende Klammer stoßen, prüfen Sie, ob der obere Teil des Stapels dem Stapel entspricht. Wenn es übereinstimmt, blenden Sie es aus, wenn nicht, ist das ein Fehler. Nach Abschluss sollte der Stapel leer sein.
%Vor% Es folgt ein Java
Codebeispiel, um festzustellen, ob eine Zeichenfolge ausgeglichen ist.
Die Idee ist, dass -
( [ {
auf den Stapel. ) ] }
zu schließen, versuchen Sie, eine passende öffnende Klammer ( [ }
aus dem Stapel zu entfernen. Wenn Sie keine passende öffnende Klammer finden, ist die Zeichenfolge nicht ausgeglichen. Jede Rückmeldung ist sehr willkommen. Bitte kritisieren Sie, wenn Sie etwas falsch oder nutzlos finden. Ich versuche nur zu lernen.