สมมติว่าเรามีวงเล็บปีกกา (กลม, หยิกและสี่เหลี่ยม) เราต้องตรวจสอบว่าวงเล็บมีความสมดุล (มีรูปร่างดี) หรือไม่
ดังนั้น หากอินพุตเป็น s ="([()()]{[]})()" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- stack :=รายการใหม่
- d :=แมปแฮชที่มีคู่คีย์-ค่า ('}', '{'),(')','('), (']', '[')
- สำหรับแต่ละอักขระ c ใน s ทำ
- ถ้า c เป็นหนึ่งใน '}])' แล้ว
- ถ้า stack ว่างหรือด้านบนของ stack ไม่เหมือนกับ d[c] แล้ว
- คืนค่าเท็จ
- ป๊อปจากสแต็ก
- ถ้า stack ว่างหรือด้านบนของ stack ไม่เหมือนกับ d[c] แล้ว
- มิฉะนั้น
- ดัน 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