Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าการต่อสตริงวงเล็บสองสตริงสมดุล (Balanced) หรือไม่ ใน Python


ปัญหา

ให้สตริงวงเล็บ s และ t (มีเฉพาะ '(' และ ')') ตรวจสอบว่า s+t หรือ t+s เป็น balanced parentheses หรือไม่

ตัวอย่าง

s = "()()))", t = "()(()("
s+t = "()()))()(()(" → ไม่สมดุล
t+s = "()(()()()))" → สมดุล → True

แนวคิดการแก้ปัญหา

  1. เขียนฟังก์ชน์ is_balanced(s) ตรวจสอบวงเล็บสมดุลด้วย stack
  2. ตรวจสอบ 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