この記事では主に、括弧一致を解決するための Python のスタックベースの文字列トラバーサル、判断、および操作スキルを含む、括弧一致の問題を解決する Python の方法を紹介します。必要な方は参考にしてください。
この記事では、Python の実装について例を示して説明します。括弧の一致の問題を解決します。詳細は次のとおりです:
私が学部でデータ構造を勉強していたときに、これによく遭遇しました。主流のアイデアは、スタックのプッシュとポップを使用してマッチングを実行することです。 Python の場合、リストの append
方法相当于栈的push
方法,列表的pop
方法相当于栈的pop
メソッドにより、リストを使用してこの操作を完了できます。
主なアイデア:
まず、さまざまな括弧の開始括弧と終了括弧を格納する 2 つのリストを設定し、次に、次の状況に分けて指定された文字列を走査します。
1. 文字列の先頭。文字が閉じ括弧リスト内にあり、直接終了し、エラーを出力します
2. 文字列の長さが偶数ではなく、直接終了し、エラーを出力します
3.重複排除後のリストの長さが偶数の場合は、直接終了してエラーを出力します
4. 文字列をトラバースし、開き括弧のセットに属する括弧をリストに追加します。閉じ括弧、閉じ括弧リスト内の閉じ括弧のインデックスと現在のリストの終わりを計算します。 開き括弧リスト内の開き括弧のインデックスが一貫しているかどうか、一貫している場合は続行します。一貫していない場合は、直接終了してエラーを出力します。
主な理由は、長さが大きい場合に、いくつかの明らかなエラー パターンをできるだけ早く特定でき、時間を節約できることです。以下は、具体的な実装です。
#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:括号匹配的相关问题 ''' def bracket_mathch(one_str): ''''' 括号匹配 ''' tmp_list=[] open_bracket_list=['(','[','{','<','《'] close_bracket_list=[')',']','}','>','》'] one_str_list=list(one_str) length=len(one_str_list) set_list=list(set(one_str_list)) num_list=[one_str_list.count(one) for one in set_list] if one_str[0] in close_bracket_list: return False elif length%2!=0: return False elif len(set_list)%2!=0: return False else: for i in range(length): if one_str[i] in open_bracket_list: tmp_list.append(one_str[i]) elif one_str[i] in close_bracket_list: if close_bracket_list.index(one_str[i])==open_bracket_list.index(tmp_list[-1]): tmp_list.pop() else: return False break return True if __name__ == '__main__': one_str_list=['({})','({[<《》>]})','[(]){}','{{{{{{','([{}])','}{[()]'] for one_str in one_str_list: if bracket_mathch(one_str): print one_str, '正确' else: print one_str, '错误' tmp='{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]' print bracket_mathch(tmp)
:
以上がPython は括弧の一致の問題を解決するメソッドを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。