Kami menyebut grup paren paren terbuka (
, paren dekat yang cocok)
dan semua yang ada di dalamnya.
Grup atau string parens disebut tanda kurung seimbang jika tidak mengandung apa-apa atau hanya 2 kelompok parens seimbang murni.
Sebagai contoh:
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
Juga:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
Jadi, string atau grup parens seimbang harus:
- Tidak mengandung apa pun.
- Atau hanya berisi dan persis 2 grup parens seimbang yang disusun dalam tanda kurung. Seharusnya tidak mengandung yang lain.
Tugas:
Tugas Anda adalah menulis fungsi atau program yang memeriksa apakah string yang diberikan adalah tanda kurung yang seimbang atau tidak.
Memasukkan:
Input akan berupa string atau daftar karakter atau yang serupa. Anda dapat mengasumsikan bahwa string hanya akan terdiri dari karakter '('
dan ')'
. Anda juga dapat mengasumsikan bahwa setiap paren terbuka (
akan memiliki cocok paren penutupan )
, jadi jangan khawatir tentang string seperti "((("
atau ")("
atau "(())("
...
Catatan: Seperti yang disebutkan oleh @DigitalTrauma dalam komentarnya di bawah, tidak apa-apa untuk mengganti ()
kombo dengan karakter lain (seperti <>
,[]
, ...), jika itu menyebabkan pekerjaan tambahan seperti melarikan diri dalam beberapa bahasa
Keluaran:
Apa pun untuk memberi sinyal apakah string tersebut diseimbangkan dengan tanda kurung atau tidak (benar atau salah, 1 atau 0, ...). Harap sertakan dalam jawaban Anda apa fungsi / program Anda diharapkan untuk menghasilkan.
Contoh:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
Dua contoh terakhir benar-benar membuat perbedaan!
Semoga berhasil!
"(()())()"
akan direpresentasikan sebagai [0, 0, 1, 0, 1, 1, 0, 1]
. Ini akan menghapus keharusan untuk mengkonversi input ke kode karakter dan kemudian mengurangi.