Wie überprüfe ich, ob ein String ausgeglichen ist?

7

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?

    
Mike John 18.02.2013, 05:29
quelle

6 Antworten

21

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 ;

zurückgegeben wird

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 .

    
Nikolay Kuznetsov 18.02.2013, 05:34
quelle
8

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%     
Clyde 18.02.2013 05:33
quelle
1

Nun, grob gesagt, wenn es ausgewogen ist, bedeutet das, dass Ihr Stapel leer sein sollte.

Dafür musst du deinen Stack aufstampfen, wenn du ein }

parst

Zusätzlich muss überprüft werden, ob } vor { steht oder das Popup-Zeichen ein { ist.

    
Karthik T 18.02.2013 05:33
quelle
1

Es folgt ein Java Codebeispiel, um festzustellen, ob eine Zeichenfolge ausgeglichen ist.

Ссылка

Die Idee ist, dass -

  • Drücken Sie für jede öffnende Klammer ( [ { auf den Stapel.
  • Um die geschweifte Klammer ) ] } 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.
  • Wenn nach der Verarbeitung der vollständigen Zeichenfolge der Stapel leer ist, wird die Zeichenfolge ausgeglichen. Sonst ist die Zeichenfolge nicht ausgeglichen.
ManojGumber 18.02.2013 05:34
quelle
0
%Vor%

Jede Rückmeldung ist sehr willkommen. Bitte kritisieren Sie, wenn Sie etwas falsch oder nutzlos finden. Ich versuche nur zu lernen.

    
andybandy12 19.02.2015 18:01
quelle
0
%Vor%     
Pankaj 13.08.2016 18:11
quelle

Tags und Links