Heim > Java > javaLernprogramm > Länge des längsten ausgewogenen Klammers Präfix mit Java

Länge des längsten ausgewogenen Klammers Präfix mit Java

Patricia Arquette
Freigeben: 2025-02-07 11:55:10
Original
170 Leute haben es durchsucht

Length of longest balanced parentheses prefix using Java

In diesem Artikel wird erläutert, wie Java verwendet wird, um die Länge des am längsten ausgeglichenen Klammers Präfix zu finden. Zuerst werden wir das Problem anhand mehrerer Beispiele verstehen und dann zwei verschiedene Ansätze lernen, um es zu suchen.

Problem Erklärung

Hier geben wir eine Zeichenfolge mit Klammern und müssen die Länge des ausgewogenen Satzes von Klammern aus der Zeichenfolge finden. Mit anderen Worten, wenn es alle öffnenden Klammern

"(" ")" gibt, nennen wir es ausgewogen. Präfixe definieren einen ausgewogenen Satz vom Beginn einer Zeichenfolge. Zum Beispiel wird für die Menge von Klammern '(()) ()' nur '(())' berücksichtigt.

Eingangs- und Ausgangsszenarien

Für ein besseres Verständnis schauen wir uns einige Eingangs- und Ausgangsszenarien an.

Wenn die Eingangszeichenfolge
    "(()"
  • ist, ist das ausgewogene Klammern Präfix () , sodass die Länge 2. beträgt Wenn die Eingangszeichenfolge
  • "(() () () ()) (("
  • ist, ist das ausgewogene Klammern Präfix (() ())) Die Länge beträgt also 8. Wenn die Eingangszeichenfolge
  • "(() () ()) () ()"
  • ist, ist das ausbalancierte Klammern -Präfix (() ()) , also die Länge ist 6.
  • Die Länge des am längsten ausgewogenen Klammernspräfixes findet sich wie folgt:

Verwenden von Stack -Datenstrukturen
  • Zählung Öffnen und Schließen von Klammern
  • Verwenden von Stack -Datenstrukturen

Stapel können verwendet werden. Wenn Sie die öffnenden Klammern "

(

'aus dem Stapel Sie haben 2.) Weiter und geben Sie eine Zählervariable zurück, wenn sie ein leerer Stapel wird Algorithmus

Der Algorithmus lautet wie folgt:

Wenn das Zeichen
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
Nach dem Login kopieren
Nach dem Login kopieren
(
    ist, drücken Sie es auf den Stapel.
  • Wenn das -Zeichen )
  • ist, knallt der Stapel.
  • erhöht den Zähler um 2.
  • Überprüfen Sie, ob der Stapel leer ist.
  • Wenn es leer ist, beendet die Schleife.
  • Schritt 3:
Geben Sie den Zähler am Ende zurück.

Beispiel

<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe

Die Eingangszeichenfolge lautet: (()) ((( Die Länge des am längsten ausgewogenen Klammers Präfix ist: 6

Zählen Sie das Öffnen und Schließen von Klammern

Dieser Ansatz verwendet zwei Variablen: Anzahl und Länge. Wenn das Zeichen "

(

" aus der Zeichenfolge lautet, zählt die Inkrementzzahl nach 1; Wenn das Zeichen ") " ist, zählen Sie die Anzahl der Zahlen um 1 und die Inkrementlänge um 2. Überprüfen Sie, ob die Anzahl 0 ist, wenn es 0 ist, beenden Sie die Schleife und die Rückgabelänge. Beispiel

import java.util.Stack;

public class Example {
   public static int longestBalancedPrefix(String s) {
      Stack<Character> stack = new Stack<>();
      int count = 0;
      for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);
         if (c == '(') {
            stack.push(c);
         } else if (c == ')') {
            if (!stack.isEmpty()) {
               stack.pop();
               count += 2;
            }
         }
         if (stack.isEmpty()) {
            break;
         }
      }
      return count;
   }

   public static void main(String[] args) {
      String s = "((())(((";
      int length = longestBalancedPrefix(s);
      System.out.println("入力文字列は:" + s);
      System.out.println("最長のバランスの取れた括弧のプレフィックスの長さは:" + length);
   }
}
Nach dem Login kopieren
Ausgabe

Die Eingangszeichenfolge ist ((()) ()) (())) Die am längsten ausgewogene Klammern -Präfixlänge beträgt 8

Das obige ist der detaillierte Inhalt vonLänge des längsten ausgewogenen Klammers Präfix mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
Kann Java als Backend des Webs verwendet werden?
Aus 1970-01-01 08:00:00
0
0
0
Installieren Sie JAVA
Aus 1970-01-01 08:00:00
0
0
0
Java kann nicht installiert werden
Aus 1970-01-01 08:00:00
0
0
0
Ist das in der Java-Sprache?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage