判断语句也会执行pop()吗?
def isValid(self, s: str) -> bool:stack = []
cache = {'(':')','[':']','{':'}'}
for c in s:
if c in cache:
stack.append(c)
continue
if len(stack) == 0 or cache!=c:
return False
return len(stack) == 0
print(isValid("{[()]}"))
执行到 if len(stack) == 0 or cache!=c: 这一行的时候进行了判断,然后stack还真就pop了列表里的元素,请问这是为什么呢?不是说只是判断吗? 这本身就是一个执行语句 pop()函数做两件事
第一件事将列表最后一个元素删除
第二件事返回那个被删除的元素
同理,在
if len(stack) == 0 or cache!=c:
中
由于遵守短路逻辑的原则,只要条件 len(stack) == 0不成立,pop()都会执行,一旦pop()执行成功,stack就会被删除最后一个元素
页:
[1]