检查 Python 中两个字符串的连接是否平衡
假设我们有两个括号序列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