假设我们有两个括号序列 s 和 t,只有这些字符 '(' 和 ')'。我们必须检查 s 和 t 的连接字符串是否平衡。连接可以通过 s | 完成 t 或 t | s。
因此,如果输入类似于 s = "()()))", t = "()(()("),那么输出将为 True 因为如果我们连接 t | s,那么我们将得到 "() (()(()()))”,这是平衡的。
为了解决这个问题,我们将按照以下步骤操作 -
定义一个函数is_balanced_parenthesis()。这将需要字符串
堆栈 := 一个新列表
对于范围 0 到字符串大小的 i,请执行
如果堆栈为空,则
否则,
返回错误
从堆栈中弹出
将 string[i] 压入堆栈
如果 string[i] 与 '(' 相同,则
否则,
如果堆栈不为空,则
返回错误
返回真
从主要方法执行以下操作 -
如果 is_balanced_parenthesis(s + t) 为真,则
返回真
返回 is_balanced_parenthesis(t + s)
让我们看看以下实现以获得更好的理解 -
def is_balanced_parenthesis(string): stack = [] for i in range(len(string)): if string[i] == '(': stack.append(string[i]) else: if len(stack) == 0: return False else: stack.pop() if len(stack) > 0: return False return True def solve(s, t): if is_balanced_parenthesis(s + t): return True return is_balanced_parenthesis(t + s) s = "()()))" t = "()(()(" print(solve(s, t))
"()()))", "()(()("输出结果
True