-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbalancedBrackets.py
More file actions
73 lines (50 loc) · 1.45 KB
/
balancedBrackets.py
File metadata and controls
73 lines (50 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/python3
# ALDO FUSTER TURPIN
import math
import os
import random
import re
import sys
# constraints:
# 1 <= n <= 10^3
# 1 <= |s| <= 10^3 where |s| is the length of the sequence.
def complementary(myCharacter):
# print("myCharacter: {}".format(myCharacter)) # debug info
if myCharacter == "]":
return "["
elif myCharacter == "}":
return "{"
elif myCharacter == ")":
return "("
else:
raise BaseException("Not supported")
def isBalanced(s):
if len(s) % 2 != 0 :
return "NO"
else:
# stack to save opening brackets
stack = []
for element in s:
# print("element: {}".format(element)) # debug info
if element == "(" or element == "[" or element == "{":
stack.append(element)
else:
# element is "]" or ")" or "}"
# if stack is empty then closing bracket does not match any
# opening bracket
if len(stack) == 0:
return "NO"
elif stack.pop() != complementary(element):
return "NO"
if len(stack) == 0:
return "YES"
else:
return "NO"
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input())
for t_itr in range(t):
s = input()
result = isBalanced(s)
fptr.write(result + '\n')
fptr.close()