(S)
| 17 | |
| 18 | |
| 19 | def is_balanced(S): |
| 20 | |
| 21 | stack = [] |
| 22 | open_brackets = set({'(', '[', '{'}) |
| 23 | closed_brackets = set({')', ']', '}'}) |
| 24 | open_to_closed = dict({'{':'}', '[':']', '(':')'}) |
| 25 | |
| 26 | for i in range(len(S)): |
| 27 | |
| 28 | if S[i] in open_brackets: |
| 29 | stack.append(S[i]) |
| 30 | |
| 31 | elif S[i] in closed_brackets: |
| 32 | if len(stack) == 0 or (len(stack) > 0 and open_to_closed[stack.pop()] != S[i]): |
| 33 | return False |
| 34 | |
| 35 | return len(stack) == 0 |
| 36 | |
| 37 | |
| 38 | def main(): |