判断一个字符串中的括号是否成对出现:
import heapq import collections a='())(((aadg)(jnvh))' heap=[] l=collections.Counter(a) #如果左括号和右括号出现次数不一致,直接返回不一致 if l['(']==l[')']: print(a.find('('),a.find(')')) # 如果第一个右括号在第一个左括号后,最后一个优酷号在左括号后,满足条件 if a.find('(')<a.find(')') and a.rfind('(') > a.rfind(')'): for i in a: # 如果是左括号,压栈,把左括号压到栈中 if i=='(': heapq.heappush(heap,i) print(heap) # 如果是右括号并且栈里不是空,弹栈 elif i==')' and len(heap)>0: heapq.heappop(heap) print(heap) # 如果是右括号并且栈里是空,括号位置有问题 elif i==')' and len(heap)==0: print('括号不是成对出现') #其他字符直接过 else: pass else: print('括号位置不对') else: print('括号对数错误')