สมมติว่าเรามีสตริงที่ประกอบด้วยวงเล็บ "(" และ ")" เราต้องตรวจสอบว่าวงเล็บสมดุลหรือไม่
ดังนั้น หากอินพุตเป็น s ="(()())(())" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- num_open :=0
- สำหรับแต่ละอักขระ c ใน s ทำ
- ถ้า c เหมือนกับ ')' แล้ว
- ถ้า num_open <0 แล้ว
- num_open :=num_open - 1
- มิฉะนั้น
- คืนค่าเท็จ
- มิฉะนั้น
- num_open :=num_open + 1
- ถ้า num_open <0 แล้ว
- ถ้า c เหมือนกับ ')' แล้ว
- ผลตอบแทนผกผันของ num_open
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): num_open = 0 for c in s: if c == ')': if num_open < 0: num_open -= 1 else: return False else: num_open += 1 return not num_open ob = Solution() print(ob.solve("(()())(())"))
อินพุต
"(()())(())"
ผลลัพธ์
False