สมมติว่าเรามีสตริงที่ประกอบด้วยวงเล็บ "(" และ ")" เราต้องตรวจสอบว่าวงเล็บสมดุลหรือไม่
ดังนั้น หากอินพุตเป็น 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