如果当前栈为空,那么再看当前符号为右半部分,则一定不合法;否则就入栈;
如果当前栈不为空,那么判断当前符号能否和栈尾配对,能配对则将栈尾符号出栈;不能配对则看是否##是右半##部分,如果是则一定不合法,不是则入栈;
class Solution:
def isValid(self , s ):
# write code here
ss={'{':1,'}':-1,'[':2,']':-2,'(':3,')':-3}
stack=[]
for x in s:
if len(stack)==0:
if ss[x]<0:return False
else:stack.append(x)
elif ss[x]+ss[stack[-1]]==0:stack.pop()
elif ss[x]<0:return False
else:stack.append(x)
if len(stack)>0:return False
else:return True


京公网安备 11010502036488号