Python :: Aufgabe #52
1 Lösung

Klammerebenen checken
Anfänger - Python
von bibir
- 03.09.2014 um 09:22 Uhr
Ein übergebener String enthält neben anderen (bedeutungslosen) Zeichen öffnende und schließende Klammern, wobei die Klammern rund(), eckig [] oder geschweift {} sein können.
In einem Programm/Skript ist zu überprüfen, ob Klammern korrekt gesetzt wurden. Dabei gilt:
- jede sich öffnende Klammer wird von einer Klammer gleicher Art wieder geschlossen
- jede sich schließende Klammer wurde von einer Klammer gleicher Art geöffnet
- ein Klammernpaar darf nicht durch andere Klammernpaare überschnitten werden
Beispiele:
(([[]])) => true
([)] => false
([]]) => false
(())) => false
(() => false
({[])} => false
Gar keine Klammern => true
In einem Programm/Skript ist zu überprüfen, ob Klammern korrekt gesetzt wurden. Dabei gilt:
- jede sich öffnende Klammer wird von einer Klammer gleicher Art wieder geschlossen
- jede sich schließende Klammer wurde von einer Klammer gleicher Art geöffnet
- ein Klammernpaar darf nicht durch andere Klammernpaare überschnitten werden
Beispiele:
(([[]])) => true
([)] => false
([]]) => false
(())) => false
(() => false
({[])} => false
Gar keine Klammern => true
Lösungen:

def check_brackets(expr): if not len(expr) % 2 == 0: return False stack = [] associated_bracks = {'(': ')', '[': ']', '{': '}'} for i in range(0, len(expr)): c = expr[i] if c in associated_bracks.keys(): stack.append(c) elif not stack or c != associated_bracks[stack.pop()]: return False return True test_expressions = ['(([[]]))', '([)]', '([]])', '(()))', '(()', '({[])}', ''] for expr in test_expressions: print("'" + expr + "'", "=>", check_brackets(expr))