เราเรียกกลุ่ม paren (
ว่าparen แบบเปิดกลุ่ม paren ที่ใกล้เคียงกัน)
และทุกอย่างในนั้น
กลุ่ม parens หรือสตริงเรียกว่าวงเล็บสมดุลถ้ามันมีอะไรหรือเพียง 2 กลุ่ม parens สมดุลวงเล็บ
ตัวอย่างเช่น:
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.
ในทำนองเดียวกัน:
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.
ดังนั้นสตริงที่สมดุลหรือวงเล็บกลุ่มวงเล็บควร:
- ไม่มีอะไรเลย
- หรือมีกลุ่มวงเล็บที่สมดุลเท่านั้น มันควรมีอะไรอย่างอื่น
งาน:
งานของคุณคือการเขียนฟังก์ชั่นหรือโปรแกรมที่ตรวจสอบว่าสตริงที่กำหนดมีความสมดุลในวงเล็บหรือไม่
การป้อนข้อมูล:
อินพุตจะเป็นสตริงหรือรายการของตัวละครหรือสิ่งที่คล้ายกัน คุณสามารถสมมติว่าสตริงจะประกอบด้วยตัวอักษรและ'('
')'
นอกจากนี้คุณยังสามารถสันนิษฐานได้ว่าแต่ละวงเล็บเปิด(
จะมีการจับคู่วงเล็บใกล้ชิด)
จึงไม่ต้องกังวลเกี่ยวกับสตริงเหมือน"((("
หรือ")("
หรือ"(())("
...
หมายเหตุ:ในฐานะที่เป็นที่กล่าวถึงโดย @DigitalTrauma ในความคิดเห็นร้องของเขาก็ตกลงที่จะ subtitute ()
คำสั่งผสมโดยตัวละครอื่น ๆ (เช่น<>
, []
, ... ) ถ้ามันก่อให้เกิดการทำงานเพิ่มเติมเช่นการหลบหนีในบางภาษา
เอาท์พุท:
สิ่งใดที่ส่งสัญญาณว่าสตริงมีความสมดุลในวงเล็บหรือไม่ (จริงหรือเท็จ, 1 หรือ 0, ... ) โปรดระบุคำตอบของคุณในสิ่งที่ฟังก์ชั่น / โปรแกรมของคุณคาดว่าจะได้รับ
ตัวอย่าง:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
สองตัวอย่างสุดท้ายสร้างความแตกต่างอย่างแท้จริง!
ขอให้โชคดี!
"(()())()"
[0, 0, 1, 0, 1, 1, 0, 1]
สิ่งนี้จะลบความจำเป็นในการแปลงอินพุตเป็นโค้ดอักขระแล้วลบออก