Balanced Brackets

Sort by

recency

|

42 Discussions

|

  • + 0 comments

    My answer in Python

    def isBalanced(s):
        pattern = r"\{\}|\(\)|\[\]"
        
        while re.search(pattern, s):
            s = re.sub(pattern, "", s)
            
        if s:
            return "NO"
        else:
            return "YES"
    
  • + 0 comments
    public static string isBalanced(string s)
    {
        var lastLength = -1;
        while(s.Length != lastLength){
            lastLength = s.Length;
            s = s.Replace("{}", "");
            s = s.Replace("[]", "");
            s = s.Replace("()", "");
        }
        return s.Length == 0 ? "YES" : "NO";
    }
    
  • + 0 comments

    Java O(n)

    public static String isBalanced(String s) {
            Stack<Character> stack = new Stack<>();
    
            for (char c : s.toCharArray()) {
                if (c == '(' || c == '{' || c == '[') {
                    stack.push(c);
                } else {
                    if (stack.isEmpty()) {
                        return "NO";
                    }
                    char top = stack.pop(); 
                    if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' && top != '[')) {
                        return "NO";
                    }
                }
            }
            return stack.isEmpty() ? "YES" : "NO";
        }
    
  • + 0 comments

    Java 15

    var squareOpen = false;
    var curlyOpen = false;
    var parenthesisOpen = false;
    
    Queue<Character> brackets = new LinkedList<>();
    Stack<Character> expectedClosures = new Stack<>();
    for (var c : s.toCharArray()) {
    	brackets.add(c);
    }
    
    while (!brackets.isEmpty()) {
    	var ele = brackets.poll();
    	try {
    		switch (ele) {
    			case '[': squareOpen = true; expectedClosures.add(']'); break;
    			case '(': parenthesisOpen = true; expectedClosures.add(')'); break;
    			case '{': curlyOpen = true; expectedClosures.add('}'); break;
    			case ']': squareOpen = false; if (expectedClosures.pop() != ele) return "NO"; break;
    			case ')': parenthesisOpen = false; if (expectedClosures.pop() != ele) return "NO"; break;
    			case '}': curlyOpen = false; if (expectedClosures.pop() != ele) return "NO";
    		}
    	} catch (EmptyStackException ex) {
    		return "NO";
    	}
    }
    return !squareOpen && !parenthesisOpen && !curlyOpen ? "YES" : "NO";
    
  • + 0 comments

    JS

    function isBalanced(string) {
        const pairs = new Map([[")", "("], ["}", "{"], ["]", "["]]);
        const brackets = [];
        let balanced = true;
        for (let bracket of string) {
            if (pairs.has(bracket)) {
                if (brackets.pop() != pairs.get(bracket)) {
                    balanced = false;
                    break;
                }
            }
            else {
                brackets.push(bracket);
            }
        }
        return (balanced && brackets.length == 0) ? "YES" : "NO";
    }