Jan 132021
 

这道题是判断输入的符号是否合法。

https://leetcode.com/problems/valid-parentheses/

这道题涉及到所谓栈,stack,所谓的后进先出。这个需要理解一下。

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        dic={'(':')','[':']','{':'}'}

        for i in s:
            if i in dic:
                stack.append(i)
            elif len (stack)== 0 or dic[stack.pop()]!=i:
                return False

        return len(stack)==0

代码理解

  1. 建立一个字典
  2. 建立一个空的栈,stack
  3. for循环,如果在字典里,例如左括号,那么就会放到stack上。
  4. 当 i 遇到右括号,由于不在字典里,就运行 elif  , 如果这个时候 stack是空的话,说明没有左括号。或者stack刚刚进入的值的字典里,不是左括号,value 不等于 右括号。那么就是False
  5. 最后,必须stack为空,才能确认是合法的,例如只有一个左括号。

把左边的符号,都放到stack里,右边的符号,从stack拿出来,去字典把value取出来,如果等,那么就继续运行下去。一直到stack里为空,才能证明是有效。

 Leave a Reply

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.