Heim >Backend-Entwicklung >Python-Tutorial >Python implementiert eine Methode zur Lösung des Klammeranpassungsproblems

Python implementiert eine Methode zur Lösung des Klammeranpassungsproblems

不言
不言Original
2018-04-17 10:57:552205Durchsuche

In diesem Artikel wird hauptsächlich die Methode von Python zum Lösen von Bracket-Matching-Problemen vorgestellt, die Pythons stapelbasierte String-Traversal-, Beurteilungs- und Operationsfähigkeiten zum Lösen von Bracket-Matching-Problemen umfasst.

Das Beispiel in diesem Artikel Der Artikel beschreibt die Methode zur Lösung des Klammeranpassungsproblems in Python. Ich teile es Ihnen als Referenz mit:

Ich bin oft darauf gestoßen, als ich in meinem Bachelor-Studiengang Datenstrukturen studiert habe Für Python können Sie Listen verwenden, um diesen Vorgang abzuschließen, da die append-Methode der Liste der push-Methode des Stapels und die pop-Methode der Liste entspricht pop Methode des Stapels.

Die Hauptidee:

Erstellen Sie zunächst zwei Listen, um die offenen und schließenden Klammern verschiedener Klammern zu speichern, und durchlaufen Sie dann die angegebene Zeichenfolge und teilen Sie sie in The auf Folgende Situationen:

1. Das erste Zeichen der Zeichenfolge erscheint in der Liste der geschlossenen Klammern und gibt einen Fehler aus

2. Die Länge der Zeichenfolge ist keine gerade Zahl. endet direkt und gibt einen Fehler aus

3. Deduplizieren Sie die ursprüngliche Zeichenfolge in eine Liste. Wenn die Länge der deduplizierten Liste keine gerade Zahl ist, wird sie direkt beendet und ein Fehler ausgegeben

4. Durchlaufen Sie die Zeichenfolge und entfernen Sie die Klammern, die zur Liste der geschlossenen Klammern gehören. Berechnen Sie, ob der Index der geschlossenen Klammer mit der Liste übereinstimmt Index der letzten offenen Klammer in der aktuellen Liste Wenn sie konsistent sind, fahren Sie fort, andernfalls wird der Fehler direkt beendet und ausgegeben.

dient hauptsächlich dazu, einige offensichtliche Fehlermuster so schnell wie möglich zu beurteilen Die Länge ist sehr groß, was Zeit spart. Die spezifische Implementierung lautet wie folgt:

#!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)

Die Ergebnisse sind wie folgt:

Das obige ist der detaillierte Inhalt vonPython implementiert eine Methode zur Lösung des Klammeranpassungsproblems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn