检查 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP