Rumah > Java > javaTutorial > Panjang kurungan kurungan seimbang terpanjang menggunakan java

Panjang kurungan kurungan seimbang terpanjang menggunakan java

Patricia Arquette
Lepaskan: 2025-02-07 11:55:10
asal
235 orang telah melayarinya

Length of longest balanced parentheses prefix using Java

Artikel ini menerangkan cara menggunakan Java untuk mencari panjang kurungan yang paling lama seimbang. Pertama, kita akan memahami masalah menggunakan beberapa contoh dan kemudian belajar dua pendekatan yang berbeza untuk mencarinya.

Penjelasan masalah

Di sini kita memberikan rentetan yang mengandungi kurungan dan kita perlu mencari panjang set kurungan seimbang dari rentetan. Dalam erti kata lain, jika terdapat semua kurungan pembukaan

"(" ")"

, maka kita panggil ia seimbang.

awalan menentukan set seimbang dari awal rentetan. Sebagai contoh, untuk set kurungan '(()) ()', hanya '(())' dipertimbangkan. senario input dan output

Untuk pemahaman yang lebih baik, mari kita lihat beberapa senario input dan output.

Jika rentetan input adalah

"(()"

, awalan kurungan seimbang adalah

()
    , jadi panjangnya adalah 2.
  • Jika rentetan input adalah "((() ())) (((" , kurungan kurungan seimbang adalah ((() ()))) Jadi panjangnya 8.
  • Jika rentetan input adalah "(() ()) () ()" , kurungan kurungan seimbang adalah (() ()) , jadi panjang adalah 6.
  • Panjang kurungan kurungan seimbang yang paling lama dapat dijumpai seperti berikut: menggunakan struktur data stack
  • Count Pembukaan dan Penutup Pandangan

menggunakan struktur data stack
  • tumpukan boleh digunakan. Sekiranya anda mendapati tanda kurung pembukaan '
  • (
  • ' dari timbunan, tolaknya ke timbunan. Jika anda menemui tanda kurung penutup, pop timbunan dan tambah pembolehubah kaunter dengan 2 (baki panjang pasangan Anda mendapat 2.) Teruskan melakukan ini dan mengembalikan pemboleh ubah kaunter apabila ia menjadi timbunan kosong
  • Algoritma

Algoritma adalah seperti berikut:

Jika watak itu

(

, tolaknya ke timbunan.

Jika aksara

adalah

)
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
Salin selepas log masuk
Salin selepas log masuk
, muncul timbunan.
  • Meningkatkan kaunter dengan 2. Semak jika timbunan kosong.
  • Jika ia kosong, berakhir gelung.
  • Langkah 3:
  • Kembalikan kaunter pada akhir.
  • Contoh

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

    output

    rentetan input ialah: ((()) ((( Panjang kurungan kurungan seimbang yang paling lama ialah: 6

    Count Pembukaan dan Penutup Pandangan

    Pendekatan ini menggunakan dua pembolehubah: kiraan dan panjang. Jika watak itu " (" dari rentetan, kiraan kenaikan sebanyak 1; jika watak itu "

    )

    ", kiraan pengurangan sebanyak 1 dan panjang kenaikan sebanyak 2. Semak jika kiraan adalah 0, jika ia adalah 0, keluar dari gelung dan panjang kembali. Contoh

    output
    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);
       }
    }
    Salin selepas log masuk

    rentetan input adalah ((()) ()) (())) Panjang Panjang Parentheses yang paling lama adalah 8

Atas ialah kandungan terperinci Panjang kurungan kurungan seimbang terpanjang menggunakan java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan