检查 Python 中两个字符串的连接是否平衡


假设我们有两个括号序列 s 和 t,它们只包含字符 '(' 和 ')'。我们需要检查 s 和 t 的连接字符串是否平衡。连接可以通过 s | t 或 t | s 完成。

因此,如果输入类似于 s = "()()))",t = "()(()(",则输出为 True,因为如果我们连接 t | s,则得到 "()(()(()()))",它是平衡的。

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个函数 `is_balanced_parenthesis()`。它将接收一个字符串作为参数。
  • stack := 新建一个列表
  • 对于范围从 0 到字符串大小的 i:
    • 如果字符串[i] 等于 '(',则:
      • 将字符串[i] 推入栈中
    • 否则:
      • 如果栈为空,则:
        • 返回 False
      • 否则:
        • 从栈中弹出元素
  • 如果栈不为空,则:
    • 返回 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

更新于:2020-12-30

278 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告