Given a string s containing only the characters '(', ')', '{', '}', '[', and ']', determine if the string is valid. A valid string satisfies:
- Every opening bracket must be closed by a matcihng bracket of the same type.
- Brackets must close in the correct order.
- Each closing bracket croresponds to an opening bracket of the same type.
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "(]"
Output: false
def check_balance(expr: str) -> bool:
bracket_pairs = {'(': ')', '[': ']', '{': '}'}
stack = []
for ch in expr:
if ch in bracket_pairs:
stack.append(ch)
elif stack and bracket_pairs[stack[-1]] == ch:
stack.pop()
else:
return False
return len(stack) == 0
class Validator:
def is_valid(self, expression: str) -> bool:
matching = {')': '(', ']': '[', '}': '{'}
open_brackets = []
for char in expression:
if char in matching.values():
open_brackets.append(char)
elif char in matching:
if not open_brackets or open_brackets[-1] != matching[char]:
return False
open_brackets.pop()
else:
return False
return not open_brackets
if __name__ == '__main__':
validator = Validator()
test_string = "([{{}}])"
print(validator.is_valid(test_string))