Cet article présente principalement la méthode Python pour résoudre les problèmes de correspondance entre parenthèses, impliquant les compétences de Python en matière de traversée de chaînes, de jugement et d'opération pour résoudre la correspondance entre parenthèses. Les amis dans le besoin peuvent s'y référer
L'exemple contenu dans cet article. L'article décrit la méthode de résolution du problème de correspondance entre crochets en Python. Je le partage avec vous pour votre référence. Les détails sont les suivants :
J'ai souvent rencontré cela lorsque j'étudiais les structures de données dans mon programme de premier cycle. L'idée principale est d'utiliser le stack push et le popping pour. matching. Comme pour python, vous pouvez utiliser des listes. Pour réaliser cette opération, car la méthode append
de la liste est équivalente à la méthode push
de la pile, et la méthode pop
de la liste est équivalente à la méthode pop
de la pile.
L'idée principale :
Configurez d'abord deux listes pour stocker les parenthèses ouvertes et fermantes de différentes parenthèses, puis parcourez la chaîne donnée et divisez-la en Le situations suivantes : 1. Le premier caractère de la chaîne apparaît dans la liste des crochets fermés, se termine directement et génère une erreur 2. La longueur de la chaîne n'est pas un nombre pair, se termine directement et génère une erreur3. Dédupliquez la chaîne d'origine dans une liste Si la longueur de la liste dédupliquée n'est pas un nombre pair, elle se terminera directement et une erreur sera générée.4. Parcourez la chaîne et supprimez les parenthèses qui appartiennent à l'ensemble des parenthèses ouvertes. Ajoutez-la à la liste. Lorsque vous rencontrez une parenthèse fermée, calculez si l'index de la parenthèse fermée dans la liste des parenthèses fermées est cohérent. index de la dernière parenthèse ouverte dans la liste actuelle dans la liste des parenthèses ouvertes. S'ils sont cohérents, continuez, sinon cela se terminera directement et affichera l'erreur
est principalement de juger certains modèles d'erreur évidents dès que possible lorsque la longueur est très grande, ce qui permet de gagner du temps. Selon cette idée simple, voici la mise en œuvre spécifique :
#!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)
Les résultats sont les suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!