Validating Balanced Parentheses in Strings

Given a string s containing only the characters '(', ')', '{', '}', '[', and ']', determine if the string is valid. A valid string satisfies:

  1. Every opening bracket must be closed by a matcihng bracket of the same type.
  2. Brackets must close in the correct order.
  3. 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))

Tags: stack string algorithm parentheses Validation

Posted on Wed, 13 May 2026 17:47:57 +0000 by joaca