在Python中检查表达式O(1)空间O(N ^ 2)时间复杂度的圆括号
假设我们有一个字符串str,其中包含这些括号'(',')','{','}','['和']',我们必须检查括号是否平衡。可以说,当开括号和闭括号类型相同时,括号是平衡的。支架以正确的顺序关闭。
因此,如果输入类似于{([]]},则输出将为True。
为了解决这个问题,我们将遵循以下步骤-
cnt:= 0
i:= 0
j:= -1
定义一个功能
solve()
。这需要s,临时cnt:= cnt-1
s:=来自s的新列表
如果j> -1并且s [j]与temp相同,则
j:= j-1
s [i]:='#'
s [j]:='#'
当j> = 0且s [j]与'#'相同时,执行
我:=我+ 1>
返回1
除此以外,
返回0
从主要方法中,执行以下操作-
如果s的大小等于0,则
返回True
除此以外,
返回False
如果s [i]与'}'相同,则
j:=我
我:=我+ 1
cnt:= cnt + 1
ans:= solve(s,'[')
如果ans与0相同,则
返回False
ans:= solve(s,'(')
如果ans与0相同,则
返回False
返回False
ans:= solve(s,'{')
如果ans与0相同,则
否则,当s [i]与')'相同时,则
否则,当s [i]与']'相同时,则
除此以外,
回答:= False
当我<的大小不为零时,
如果cnt不等于0,则
返回True
示例
让我们看下面的实现以更好地理解-
cnt = 0i = 0
j = -1
def solve(s, temp):
global i, j, cnt
cnt -= 1
s = list(s)
if j > -1 and s[j] == temp:
s[i] = '#'
s[j] = '#'
while j >= 0 and s[j] == '#':
j -= 1
i += 1
return 1
else:
return 0
def bracketOrderCheck(s):
global i, j, cnt
if len(s) == 0:
return True
else:
ans = False
while i < len(s):
if s[i] == '}':
ans = solve(s, '{')
if ans == 0:
return False
elif s[i] == ')':
ans = solve(s, '(')
if ans == 0:
return False
elif s[i] == ']':
ans = solve(s, '[')
if ans == 0:
return False
else:
j = i
i += 1
cnt += 1
if cnt != 0:
return False
return True
print(bracketOrderCheck("{([])}"))
输入值
"{(()[])}"
输出结果
True
以上是 在Python中检查表达式O(1)空间O(N ^ 2)时间复杂度的圆括号 的全部内容, 来源链接: utcz.com/z/321890.html