在一行中输入一个字符串
,长度
,由可见字符组成。
如果字符串
中的括号部分能构成合法括号序列,则输出
;否则输出
。
abcd(])[efg
false
提取括号 `(`、`)`、`[`、`]` 后为 `(])[`,不是合法括号序列。
a[x(y)z]
true
提取括号后为 `[()]`,是合法括号序列。
s = input()
rule = ["[","]","(",")"]
list_r = [["[","]","(",")"],["(",")","[","]"],["(","[","]",")"],["[","(",")","]"],["(",")"],["[","]"]]
list_s = []
list_n = []
n = 1
for i in s:
if i in rule:
list_s.append(i)
if len(list_s)<=4:
if list_s in list_r:
res = "true"
else:
res = "false"
if len(list_s)>4:
while len(list_s)> 4:
list_n = list_s[-4:]
list_s = list_s[:-4]
if list_n in list_r:
res = "true"
else:
res = "true"
if len(list_s)<=4:
if list_s in list_r:
res = "true"
else:
res = "false"
print(res)
史山代码
import sys
for line in sys.stdin:
s = line.strip()
stack = []
pairs = {')': '(', ']': '['}
for char in s:
if char in '([':
stack.append(char)
elif char in pairs:
if not stack&nbs***bsp;stack.pop() != pairs[char]:
print("false")
break
else:
print("true" if not stack else "false") a = list(input())
temp =[]
res = 1
for aaa in a:
if aaa == '('&nbs***bsp;aaa=='[':
temp.append(aaa)
elif aaa==')':
if temp:
temp2 = temp.pop()
if temp2!= '(':
res = 0
print('false')
break
else:
res = 0
print('false')
break
elif aaa==']':
if temp:
temp2 = temp.pop()
if temp2!= '[':
res = 0
print('false')
break
else:
res = 0
print('false')
break
if res:
print("true")
防御型代码你值得拥有
A = list(map(str,input().strip()))
legal_arr = []
brask = {'(':')','[':']'}
for a in A:
if a in '()[]':
if a in brask: #是左括号
legal_arr.append(a)
elif a in brask.values(): #是右括号
if not legal_arr&nbs***bsp;brask[legal_arr[-1]] != a:
#为空或者前面的不是左括号,此时肯定大于1,结束函数并输出false
print('false')
exit()
legal_arr.pop() #不为空且前面的是左括号,弹出前面的和不存当前的右括号
print('true' if not legal_arr else 'false')