Maison > développement back-end > Tutoriel Python > Python implémente une méthode pour résoudre le problème de correspondance entre crochets

Python implémente une méthode pour résoudre le problème de correspondance entre crochets

不言
Libérer: 2018-04-17 10:57:55
original
2200 Les gens l'ont consulté

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.

méthode 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 erreur

3. 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=[&#39;(&#39;,&#39;[&#39;,&#39;{&#39;,&#39;<&#39;,&#39;《&#39;]
 close_bracket_list=[&#39;)&#39;,&#39;]&#39;,&#39;}&#39;,&#39;>&#39;,&#39;》&#39;]
 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__ == &#39;__main__&#39;:
 one_str_list=[&#39;({})&#39;,&#39;({[<《》>]})&#39;,&#39;[(]){}&#39;,&#39;{{{{{{&#39;,&#39;([{}])&#39;,&#39;}{[()]&#39;]
 for one_str in one_str_list:
  if bracket_mathch(one_str):
   print one_str, &#39;正确&#39;
  else:
   print one_str, &#39;错误&#39;
 tmp=&#39;{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]&#39;
 print bracket_mathch(tmp)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal