summaryrefslogtreecommitdiff
path: root/sources/check_bracket.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/check_bracket.py')
-rw-r--r--sources/check_bracket.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/sources/check_bracket.py b/sources/check_bracket.py
new file mode 100644
index 0000000..bd7fa6e
--- /dev/null
+++ b/sources/check_bracket.py
@@ -0,0 +1,35 @@
+# Uses python3
+def check_bracket(exp):
+ char_stack = []
+ unmatched_opening_bracket = 0
+ count = 0
+ brackets = ['[', ']', '(', ')', '{', '}']
+ for i in range(len(exp)):
+ c = exp[i]
+ if c not in brackets:
+ count = count + 1
+ continue
+ if c == '[' or c == '(' or c == '{':
+ char_stack.append(c)
+ count = count + 1
+ unmatched_opening_bracket = count
+ else:
+ if len(char_stack) == 0:
+ return i + 1
+ top = char_stack[-1]
+ del (char_stack[-1])
+ if (top == '[' and c != ']') or (top == '(' and c != ')') or (top == '{' and c != '}'):
+ return i + 1
+ else:
+ unmatched_opening_bracket = unmatched_opening_bracket - 1
+ count = count + 1
+ if len(char_stack) == 0:
+ return "Success"
+ else:
+ if unmatched_opening_bracket > 0:
+ return unmatched_opening_bracket
+ return count
+
+
+exp = input()
+print(check_bracket(exp))