Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra xem các dấu ngoặc vuông khác nhau có cân bằng và được định dạng tốt hay không trong Python

Giả sử chúng ta có một chuỗi các dấu ngoặc vuông (tròn, xoăn và vuông), chúng ta phải kiểm tra xem các dấu ngoặc vuông có cân đối (đúng dạng) hay không.

Vì vậy, nếu đầu vào là s =​​"([() ()] {[]}) ()", thì đầu ra sẽ là True

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • stack:=một danh sách mới
  • d:=một bản đồ băm với các cặp khóa-giá trị ('}', '{'), (')', '('), (']', '[')
  • đối với mỗi ký tự c trong s, thực hiện
    • nếu c là bất kỳ một trong số '}])', thì
      • nếu ngăn xếp trống hoặc đầu ngăn xếp không giống với d [c], thì
        • trả về Sai
      • bật ra từ ngăn xếp
    • nếu không,
      • đẩy c vào ngăn xếp
  • trả về true khi ngăn xếp trống, ngược lại là false

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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("([()()]{[]})()"))

Đầu vào

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

Đầu ra

True