题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @return bool布尔型 # class Solution: def isValid(self , s: str) -> bool: # write code here #定义一个字典,存放key与value的关系 dict1={} dict1["("]=")" dict1["["]="]" dict1["{"]="}" #定义一个栈,当遇到左括号的时候入栈,遇到有括号的时候出栈 stack=[] #将s转化为列表的形式 L=list(s) #遍历列表中的元素 for x in L: if x in "([{": stack.append(x) #print(stack) elif x in ")]}": #当栈中的元素为空时,很明显不能遍历了,但是却来了一个右括号要匹配,显然是错误的 if len(stack)==0: return False #弹出栈中的最外层的元素 y=stack.pop() #将弹出的元素的字典对应的value和x作对比,相同的话继续遍历Lzhong 的元素,不同的话,返回False if x==dict1[y]: print("ok") pass else: return False #print(L) #遍历完成后,最后的元素stack中的,为0.大于0的话,返回False if len(stack)>0: return False #遍历完成没有其他问题返回True return True