Panjang kurungan kurungan seimbang terpanjang menggunakan java
Feb 07, 2025 am 11:55 AM
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 aksaraadalah
)<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p> <p><b>ステップ2:</b>文字列の各文字を反復(fù)処理します。</p></code>, 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>文字列の各文字を反復(fù)処理します。</p></code>
output
rentetan input ialah: ((()) ((( Panjang kurungan kurungan seimbang yang paling lama ialah: 6Pendekatan 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
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("最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さは:" + length); } }
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Terdapat tiga kaedah umum untuk melintasi Peta di Java: 1. Gunakan entriSet untuk mendapatkan kunci dan nilai pada masa yang sama, yang sesuai untuk kebanyakan senario; 2. Gunakan kekunci atau nilai untuk melintasi kekunci atau nilai masing -masing; 3. Gunakan Foreach Java8 untuk memudahkan struktur kod. EntrySet mengembalikan set set yang mengandungi semua pasangan nilai utama, dan setiap gelung mendapat objek peta.Entry, sesuai untuk akses kerap ke kunci dan nilai; Jika hanya kekunci atau nilai yang diperlukan, anda boleh memanggil kekunci () atau nilai () masing -masing, atau anda boleh mendapatkan nilai melalui map.get (kunci) apabila melintasi kunci; Java 8 boleh menggunakan foreach ((kunci, nilai)-& gt

HashMap melaksanakan penyimpanan pasangan nilai utama melalui jadual hash di Java, dan terasnya terletak di lokasi data yang cepat. 1. Mula -mula gunakan kaedah hashcode () kunci untuk menghasilkan nilai hash dan mengubahnya menjadi indeks array melalui operasi bit; 2 Objek yang berbeza boleh menghasilkan nilai hash yang sama, mengakibatkan konflik. Pada masa ini, nod dipasang dalam bentuk senarai yang dipautkan. Selepas JDK8, senarai yang dipautkan terlalu panjang (panjang lalai 8) dan ia akan ditukar kepada pokok merah dan hitam untuk meningkatkan kecekapan; 3. Apabila menggunakan kelas tersuai sebagai kunci, sama () dan kaedah hashcode () mesti ditulis semula; 4. HashMap secara dinamik mengembangkan kapasiti. Apabila bilangan elemen melebihi kapasiti dan multiplies oleh faktor beban (lalai 0.75), mengembangkan dan mengembalikan; 5. hashmap tidak selamat benang, dan concu harus digunakan dalam multithreaded

STD :: Chrono digunakan dalam C untuk memproses masa, termasuk mendapatkan masa semasa, mengukur masa pelaksanaan, titik masa operasi dan tempoh, dan masa analisis pemformatan. 1. Gunakan std :: chrono :: system_clock :: sekarang () untuk mendapatkan masa semasa, yang boleh ditukar menjadi rentetan yang boleh dibaca, tetapi jam sistem mungkin tidak membosankan; 2. Gunakan std :: chrono :: steady_clock untuk mengukur masa pelaksanaan untuk memastikan monoton, dan mengubahnya menjadi milisaat, saat dan unit lain melalui duration_cast; 3. Titik masa (time_point) dan tempoh (tempoh) boleh saling beroperasi, tetapi perhatian harus dibayar kepada keserasian unit dan zaman jam (Epoch)

Soalan frekuensi tinggi dalam wawancara Java terutamanya tertumpu pada sintaks asas, berorientasikan objek, multithreaded, JVM dan kerangka koleksi. Soalan -soalan yang paling biasa termasuk: 1. Terdapat 8 jenis data Java asas, seperti byte, pendek, int, panjang, terapung, double, char dan boolean. Perlu diperhatikan bahawa rentetan bukan jenis data asas; 2. Akhir digunakan untuk mengubah suai kelas, kaedah atau pembolehubah untuk mewakili tidak berubah, dan akhirnya digunakan untuk memastikan pelaksanaan kod dalam pemprosesan pengecualian. Memuktamadkan adalah kaedah kelas objek untuk pembersihan sebelum pengumpulan sampah; 3. Penyegerakan multi-thread dapat dicapai melalui kata kunci yang disegerakkan, reentrantlock, dan vo.

Kaedah menggunakan penyataan pra -proses untuk mendapatkan hasil pertanyaan pangkalan data dalam PHP berbeza dari lanjutan. 1. Apabila menggunakan mysqli, anda boleh mendapatkan array bersekutu melalui get_result () dan fetch_assoc (), yang sesuai untuk persekitaran moden; 2. Anda juga boleh menggunakan bind_result () untuk mengikat pembolehubah, yang sesuai untuk situasi di mana terdapat beberapa bidang dan struktur tetap, dan ia adalah keserasian yang baik tetapi terdapat banyak bidang apabila terdapat banyak bidang; 3. Apabila menggunakan PDO, anda boleh mendapatkan array bersekutu melalui FETCH (PDO :: Fetch_assoc), atau menggunakan fetchall () untuk mendapatkan semua data sekaligus, jadi antara muka bersatu dan pengendalian ralat lebih jelas; Di samping itu, anda perlu memberi perhatian kepada pemadanan jenis parameter, pelaksanaan pelaksanaan (), pembebasan sumber yang tepat pada masanya dan membolehkan laporan ralat.

Buat dan gunakan SimpledateFormat memerlukan lulus dalam rentetan format, seperti berita yang tidak terkumpul ("Yyyy-mm-ddhh: mm: ss"); 2. Perhatikan kepekaan kes dan elakkan penyalahgunaan format satu huruf bercampur dan Yyyy dan DD; 3. SimpleDateFormat bukanlah benang-selamat. Dalam persekitaran pelbagai thread, anda harus membuat contoh baru atau menggunakan threadlocal setiap kali; 4. Apabila menghuraikan rentetan menggunakan kaedah parse, anda perlu menangkap parseexception, dan perhatikan bahawa hasilnya tidak mengandungi maklumat zon waktu; 5. Adalah disyorkan untuk menggunakan DateTimeFormatter dan Lo

Dalam bahasa Go, structtags adalah maklumat meta yang dilampirkan pada medan struktur, yang digunakan untuk mengawal siri, tingkah laku deserialization atau menyediakan konfigurasi perpustakaan. 1.Structtags ditulis dalam backticks dalam kunci: "nilai" format, seperti JSON: "Nama", yang menentukan kaedah bersiri medan; 2. Pelbagai tag boleh wujud bersama, dan setiap perpustakaan mengasingkan bahagian yang diperlukan, seperti JSON dan Gorm bersama -sama; 3. Mapstruktur digunakan untuk mengkonfigurasi pemetaan, dan menyokong tag dan struktur bersarang apabila nama medan konsisten; 4. Beri perhatian untuk mengelakkan kesilapan ejaan, bidang perlu dieksport, dan tag tidak boleh disalahgunakan untuk mempengaruhi kebolehbacaan. Menguasai penggunaannya akan membantu meningkatkan kecekapan dan penjanaan pembangunan

Biconsumer adalah antara muka berfungsi di Java yang mengendalikan operasi yang tidak mengembalikan hasil. Ia tergolong dalam pakej java.util.function dan sesuai untuk senario di mana dua data diperlukan untuk beroperasi pada masa yang sama, seperti pasangan nilai utama yang melintasi peta. Penggunaan umum adalah untuk berulang dengan kaedah Foreach Map. Tidak seperti antara muka berfungsi lain seperti pengguna dan bifungsi, biconsumer tidak menghasilkan nilai pulangan. Kaedah pelaksanaan termasuk ekspresi lambda, rujukan kaedah dan kelas tanpa nama. Apabila menggunakannya, anda perlu memberi perhatian kepada susunan parameter jenis, nilai yang tidak boleh dikembalikan, dan pengendalian pengecualian.
