Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบว่าวงเล็บประเภทต่างๆ สมดุลและ well-formed หรือไม่ใน Python

สมมติว่ามีสตริงของวงเล็บ (วงกลม, วงปีกกา, เหลี่ยม) เราต้องตรวจสอบว่าวงเล็บสมดุล (well-formed) หรือไม่

เช่น ถ้าอินพุตคือ s = "([()()]{[]})()" ผลลัพธ์จะเป็น True

ขั้นตอนการแก้ปัญหา

  • stack := รายการใหม่
  • d := hash map มีคู่ ('}', '{'), (')', '('), (']', '[')
  • สำหรับแต่ละตัวอักษร c ใน s
    • ถ้า c เป็นหนึ่งใน '}])' ถ้า stack ว่างหรือ top ไม่เท่ากับ d[c] คืนค่า False, pop จาก stack
    • มิฉะนั้น push c เข้า stack
  • คืนค่า true ถ้า stack ว่าง มิฉะนั้น false

ตัวอย่างโค้ด

class Solution:
    def solve(self, s):
        stack = []
        d = {'}': '{', ')': '(', ']': '['}
        for c in s:
            if c in '}])':
                if not stack or stack[-1] != d[c]:
                    return False
                stack.pop()
            else:
                stack.append(c)
        return not stack

ob = Solution()
print(ob.solve("([()()]{[]})()"))

อินพุต

"([()()]{[]})()"

เอาต์พุต

True