かっこの問題1

1274 ワード

タイトル
「()」、「{}」、「[]の3種類のカッコが含まれている文字列を指定します.この文字列のカッコがペアで表示されているかどうかを確認します.
出力:
true:カッコのペアが正しくネストされているか、カッコのない文字を表す.
false:カッコ文字が正しく使用されていません.
ぶんせき
スタックの考え方を用いて、入力を左から右に順に判断し、左括弧であればスタックに入る.右かっこの場合は、スタックトップが現在の右かっこと一致しているかどうかを検出し、一致に成功した場合は一致を続けます.そうしないと、エラーが直接出力されます.
また、個人的にはいくつかの詳細な問題があると思います.
1、スタックが空の場合、先に右かっこが現れ、強引にマッチングを行うとエラーが報告され、直接エラーを出力することができる.
2,マッチング終了後,スタックが空でない場合,入力文字列に他の不正記号が存在する可能性があるため,長さが偶数であるか否かを直接判断することで出力を決定することはできない.
コード#コード#
while True:
    try:
        inps=input().strip()
        #      ,       
        stacks=[]
        lef=['(','[','{']
        rig=[')',']','}']
        for item in inps:
            if item in lef:
                stacks.append(item)
            elif item in rig:
                indexs=rig.index(item)
                #             ,       ,     
                if stacks and stacks[-1]==lef[indexs]:
                    stacks.pop()
                else:
                    print(False)
                    break
        else:
            #    ,        ,         ,                  
            if stacks:
                print(False)
            else:
                print(True)
    except:
        break