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
代码理解
- 建立一个字典
- 建立一个空的栈,stack
- for循环,如果在字典里,例如左括号,那么就会放到stack上。
- 当 i 遇到右括号,由于不在字典里,就运行 elif , 如果这个时候 stack是空的话,说明没有左括号。或者stack刚刚进入的值的字典里,不是左括号,value 不等于 右括号。那么就是False
- 最后,必须stack为空,才能确认是合法的,例如只有一个左括号。
把左边的符号,都放到stack里,右边的符号,从stack拿出来,去字典把value取出来,如果等,那么就继续运行下去。一直到stack里为空,才能证明是有效。