Вы можете использовать небольшую функцию, которая использует .count()
:
>>> def checkparen(inp):
... return inp.count('(') == inp.count(')') and inp.count('[') == inp.count(']') and inp.count('{') == inp.count('}')
...
Как таковой:
>>> checkparen('((()))')
True
>>> checkparen('((())')
False
>>> checkparen('[ [ { { (()) } } ] ]')
True
>>>
Или, используя collections.Counter
:
>>> def checkparen(inp):
... counter = collections.Counter(inp)
... symbols = {'{':'}','[':']','(':')'}
... for symbol in symbols:
... if counter[symbol] != counter[symbols[symbol]]:
... return False
... return True
...
>>> checkparen('{')
False
>>> checkparen('[ [ { { (()) } } ] ]')
True
>>>
- скобки, всегда упорядоченные, открываются, затем закрываются, то есть они не будут идти '()()'? –
@en_Knight Я пытался решить эту проблему (http://interactivepython.org/runestone/static/pythonds/BasicDS/BalancedSymbols(AGeneralCase).html), и да, это будет fo '()()', а также –
Oh okay , Использовать регулярное выражение! (просто шучу, пожалуйста, никто не причинил мне вреда) –