求问以下代码实现与样例不同
样例:输入:())[] 输出:NO
代码:a=list(input())
left="( ["
right=") ]"
d={')':'(',']':'['}
for i in a:
b=[]
reslut="YES"
if i in left:
b.append(i)
elif i in right:
if len(b)<1:
result="NO"
break
elif d[i]==b[-1]:
b.pop()
else:
result="NO"
break
else:
continue
if len(b) >0:
result="NO"
else:
result="YES"
print(result)
输出结果为YES
你题目输入的只有 ()[] ,没有{} 吗?
你题目的解答代码如下:
a=list(input())
left="([{"
right=")]}"
d={')':'(',']':'[','}':'{'}
reslut="YES"
b=[]
for i in a:
if i in left:
b.append(i)
elif i in right:
if len(b)<1:
result="NO"
break
elif d[i]==b[-1]:
b.pop()
else:
result="NO"
break
else: #只有正常循环结束才需要判断 len(b) >0 用 break跳出循环不需要判断
if len(b) >0:
result="NO"
else:
result="YES"
print(result)
如有帮助,望采纳!谢谢!
import re
a = '([{<>}])'
b = 'a+(b-c)*cos(a**2+b**2)'
def isMatch(a,b):
r = '[' + re.sub('(.)', r'\\\1', a) + ']'
c = re.findall(r,b)
if len(c)%2==1:
return 'No'
x = []
for i in c:
if len(x)>0 and x[len(x)-1]+a.index(i)+1==len(a):
x.pop(len(x)-1)
continue
x.append(a.index(i))
if len(x)==0:
return 'Yes'
else:
return 'No'
print(isMatch(a,b))
def match_parentheses(s):
# 把一个list当做栈使用
ls = []
parentheses = "()[]{}"
for i in range(len(s)):
si = s[i]
# 如果不是括号则继续
if parentheses.find(si) == -1:
continue
# 左括号入栈
if si == '(' or si == '[' or si == '{':
ls.append(si)
continue
if len(ls) == 0:
return False
# 出栈比较是否匹配
p = ls.pop()
if (p == '(' and si == ')') or (p == '[' and si == ']') or (p == '{' and si == '}'):
continue
else:
return False
if len(ls) > 0:
return False
return True
if __name__ == '__main__':
s = input()
result = match_parentheses(s)
if result:
print("YES")
else:
print("NO")
亲测AC