20. Valid Parentheses Leetcode Python


Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()"and "()[]{}"are all valid but "(]"and "([)]"are not.
この問題はstackを使う必要がある.
やり方は'(''['''{'を順番にスタックに入れます.それに対応する残りの半分の括弧に遭遇したときにスタックを出ます.一致しない場合はfalseに戻ります.
最後にスタックが空でない場合もfalseを返します
そうでなければ最後はtrue
1. we push '(', '[','{'  
2. when we encounter ')' ,']','}' we pop the stack.
3.if the parentheses do not match return false,   
4. if the final stack is not empty return false
5. return true
class Solution:
    # @return a boolean
    def isValid(self, s):
        stack=[]
        if len(s)==0:
            return True
        for elem in s:
            if elem=='(' or elem=='[' or elem=='{':
                stack.append(elem)
            if elem==')':
                if len(stack)==0 or stack and stack.pop()!='(':
                    return False
            elif elem==']':
                if len(stack)==0 or stack and stack.pop()!='[':
                    return False
            elif elem=='}':
                if len(stack)==0 or stack and stack.pop()!='{':
                    return False
        if len(stack)!=0:
            return False
        else:
            return True