ปัญหา
ให้สตริงวงเล็บ s และ t (มีเฉพาะ '(' และ ')') ตรวจสอบว่า s+t หรือ t+s เป็น balanced parentheses หรือไม่
ตัวอย่าง
s = "()()))", t = "()(()("
s+t = "()()))()(()(" → ไม่สมดุล
t+s = "()(()()()))" → สมดุล → True
แนวคิดการแก้ปัญหา
- เขียนฟังก์ชน์
is_balanced(s)ตรวจสอบวงเล็บสมดุลด้วย stack - ตรวจสอบ
is_balanced(s+t)หรือis_balanced(t+s)
โค้ดตัวอย่าง
def is_balanced(s):
stack = []
for ch in s:
if ch == '(':
stack.append(ch)
else: # ')'
if not stack:
return False
stack.pop()
return len(stack) == 0
def solve(s, t):
return is_balanced(s + t) or is_balanced(t + s)
print(solve("()()))", "()(()(")) # True
อินพุต / เอาต์พุต
Input: "()()))", "()(()("
Output: True