LintCode python小白-簡単な問題-423有効な括弧のシーケンス

3020 ワード

タイトル:文字列が表すカッコシーケンスを指定し、次の文字を含む:'(',')'{','}','['and'],有効なカッコシーケンスであるか否かを判定する.
サンプル:カッコは「()」の順に表示する必要があります.「()[]{}」は有効なカッコですが、「([)]は無効なカッコです.
考え方:まず辞書を定義し、左かっこを辞書のキーとし、右かっこを値とし、ペアの根拠とする.それから文字列を循環して、左かっこを得て、リストの中(スタック)に入れて、もし右かっこを得たら、まずリストに左かっこがあるかどうかを判断して、もしあるならば、更に辞書の中のスタックの上の要素がキーの値と一致して、判断の結果、最後に最後のスタックにまだ要素があるかどうかを判断して、代表に残って左かっこが一致していないならば、間違います.コード:
class Solution:
    # @param {string} s A string
    # @return {boolean} whether the string is a valid parentheses
    def isValidParentheses(self, s):
        # Write your code here
        if len(s)<=1:
            return False
        a=list(s)
        b=[]                            #       
        c={'(':')','[':']','{':'}'}     #    
        for i in a:
            if i in c:  #        ,    ,   
                b.append(i)
            else:
                if len(b)==0: #           
                    return False
                else:
                     #        ==                
                    if c.get(b[-1])!=i: 
                        return False
                    else:               
                        del b[-1]      #      
        if len(b)!=0:  #       ,        ,  
            return False
        return True