检查 Python 中两个字符串的连接是否平衡
假设我们有两个括号序列 s 和 t,它们只包含字符 '(' 和 ')'。我们需要检查 s 和 t 的连接字符串是否平衡。连接可以通过 s | t 或 t | s 完成。
因此,如果输入类似于 s = "()()))",t = "()(()(",则输出为 True,因为如果我们连接 t | s,则得到 "()(()(()()))",它是平衡的。
为了解决这个问题,我们将遵循以下步骤:
- 定义一个函数 `is_balanced_parenthesis()`。它将接收一个字符串作为参数。
- stack := 新建一个列表
- 对于范围从 0 到字符串大小的 i:
- 如果字符串[i] 等于 '(',则:
- 将字符串[i] 推入栈中
- 否则:
- 如果栈为空,则:
- 返回 False
- 否则:
- 从栈中弹出元素
- 如果栈为空,则:
- 如果字符串[i] 等于 '(',则:
- 如果栈不为空,则:
- 返回 False
- 返回 True
- 在主方法中执行以下操作:
- 如果 `is_balanced_parenthesis(s + t)` 为真,则:
- 返回 True
- 返回 `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
广告