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

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


สมมติว่าเรามีวงเล็บปีกกา (กลม, หยิกและสี่เหลี่ยม) เราต้องตรวจสอบว่าวงเล็บมีความสมดุล (มีรูปร่างดี) หรือไม่

ดังนั้น หากอินพุตเป็น s ="([()()]{[]})()" ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • stack :=รายการใหม่
  • d :=แมปแฮชที่มีคู่คีย์-ค่า ('}', '{'),(')','('), (']', '[')
  • สำหรับแต่ละอักขระ c ใน s ทำ
    • ถ้า c เป็นหนึ่งใน '}])' แล้ว
      • ถ้า stack ว่างหรือด้านบนของ stack ไม่เหมือนกับ d[c] แล้ว
        • คืนค่าเท็จ
      • ป๊อปจากสแต็ก
    • มิฉะนั้น
      • ดัน c ลงในสแต็ก
  • คืนค่า จริง เมื่อสแต็กว่างเปล่า มิฉะนั้น จะเป็นเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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