pallas 发表于 2021-11-18 21:41:46

python有效括号

class Solution:
    def isValid(self, s):
       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

求助大佬,解释一下红色部分的意思,不是很懂,谢谢!!

Mzzith 发表于 2021-11-18 22:07:02

如果stack列表为空 或者 以stack列表的最后一个元素为key所对应的value不等于c 则返回 False   
最后一句意思为 如果for c in s:这个循环正常执行中途没有执行return False这一语句 则会返回 len(stack) == 0 的布尔值(如果stack为空列表则会True 反之为False)

pallas 发表于 2021-11-19 13:54:52

Mzzith 发表于 2021-11-18 22:07
如果stack列表为空 或者 以stack列表的最后一个元素为key所对应的value不等于c 则返回 False   
最后一句 ...

大佬,这里我还是不懂:
以stack列表的最后一个元素为key所对应的value不等于c 则返回 False

Mzzith 发表于 2021-11-19 22:02:45

pallas 发表于 2021-11-19 13:54
大佬,这里我还是不懂:
以stack列表的最后一个元素为key所对应的value不等于c 则返回 False

你看 stack.pop()的意思是删除stack列表的最后一个值并把它返回出来,然后cache中 cache是一个字典,字典中每个key都会对应一个value 就例如字典的第一个 key 为'(' value为')',cache[]中 中括号中的输入一个值就相当于key,cache字典就会找这个key所对应的value,所以如果key在字典中存在 则cache相当于stack列表最后一个元素作为key所对应的value值 如果这个value不等于c返回False

pallas 发表于 2021-11-20 12:56:38

好的,懂了,谢谢大佬
页: [1]
查看完整版本: python有效括号