3.15
沉迷于逛街和吃寿喜烧无法自拔,摆了一天大烂
我果然和我闺蜜用紫薇星算命?算的一样“命宫紫微贪狼,有主见又懒”,不过她说我“身宫在官禄宫,事业搞好了才能开心”,所以允许自己摆一天,下次不许摆了
3.16
人在省图也一天只做了一道题,效率真的好低啊,百忙之中还要抽时间来敷衍跟我传播了毫无作用的知识的人,体会到了心累。不过今天被老乡请吃了火锅,味道不错,有点开心,上上次吃火锅还是和某人了,离开HK前一起吃了好多天饭啊,可是永远别向后看,要成为更好的自己,比如每天20道leetcode(bushi
class Solution:
def isValid(self, s: str) -> bool:
stack = []
dictionary = {'(': ')', '{': '}', '[': ']'}
for parentheses in s:
if parentheses in dictionary:
stack.append(parentheses)
elif len(stack) == 0 or dictionary[stack.pop()] != parentheses:
return False
return len(stack) == 0
stack.append(parentheses)
如果是左括号,那么加入栈中
elif len(stack) == 0 or dictionary[stack.pop()] != parentheses:
如果栈的长度为0(有parentheses的情况但是为0说明是右括号,或dictionary里面对应的不是应该有的那个右括号时返回false
return len(stack) == 0
如果不是0,说明可能就是有了没消掉的左括号,会返回false
关于这部分直接的判别
a = (1 == 0)
print(a)
print(type(a))
输出:
False
<class 'bool'>
另,Leetcode官方题解的理解:
class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 == 1:
return False
pairs = {
")": "(",
"]": "[",
"}": "{",
}
stack = list()
for ch in s:
if ch in pairs:
if not stack or stack[-1] != pairs[ch]:
return False
stack.pop()
else:
stack.append(ch)
return not stack
if not stack or stack[-1] != pairs[ch]:
如果stack为空或stack[-1]不与括号情况对应,stack[-1]是结尾的最后一个元素,如果新的是右括号了,所以不放进去而是拿出来比较,如果是左括号就继续放。
如果stack[-1]与括号情况对应或stack不为空,则stack.pop()。