Below mentioned problem is not a leetcode problem. This was one of the practice problems on Hackerrank.

Complete the function isBalanced in the editor below. It must return a string: YES if the sequence is balanced or NO if it is not.

isBalanced has the following parameter(s):

s: a string of brackets

**Problem Statement** - https://www.hackerrank.com/challenges/balanced-brackets/problem

**Solution Approach**

- Iterate over the given string.
- If you encounter an opening bracket "([{" push it to the stack.
- If you encounter a closing bracket pop the topmost element from the stack.

```
class Stack:
def __init__(self):
self.items = []
def push(self, element):
self.items.append(element)
def pop(self):
return self.items.pop()
def size(self):
length = len(self.items)
return length
def peek(self):
return self.items[len(self.items)-1]
def isBalanced(s):
stack = Stack()
result = True
for x in s:
if (x=='[') or (x=='(') or (x=='{'):
stack.push(x)
elif (x == ']') or (x == ')') or (x == '}'):
if stack.size() > 0:
topmost_element = stack.pop()
if ((topmost_element == '[') and (x != ']')) or ((topmost_element == '(') and (x != ')')) or ((topmost_element == '{') and (x != '}')):
result = False
break
if stack.size() == 0 and result:
return "YES"
else:
return "NO"
```

Alternate approaches to optimize the solution are welcome. No code snippets. Just discussion. :)

## Discussion (1)

Disclaimer: If in case violates the requirements, please let me know`pop()`

,`append()`

as`O(1)`

,`{open:close}`

. Which also has`O(1)`

time complexity for accessing an element. e.g.`if ((topmost_element == '[') and (x != ']')) or ((topmost_element == '(') and (x != ')')) or ((topmost_element == '{') and (x != '}')):`

Thanks.