Balanced Brackets

Sort by

recency

|

250 Discussions

|

  • + 0 comments
    //JS Solution
    
    function isBalanced(s) {
        let brackDict = [
            ["(",")"],
            ["[","]"],
            ["{","}"],
        ];
        
        
        let stack = [];
        
        for (let i = 0; i < s.length; i++) {
           let match = brackDict.find(item => item[0] == s[i]);
           if (match) {
                stack.push(match);
           } else {
                let last = stack.pop();
                if (last == undefined || last[1] != s[i]) {
                  return 'NO';
                }
            }
        
        }  
        
        if (stack.length != 0) {
            return 'NO';
        }
        
        return 'YES';
    }
    
  • + 0 comments

    js answer using a map for checking correlation:

    function isBalanced(s) {
        // Write your code here
        let openStack = new Array();
        let idx = 0;
        let valid = true;
        let correlationMap = new Map([
            [')', '('],
            [']', '['],
            ['}', '{'],
        ]);
        while(valid && idx<s.length){
            if(correlationMap.has(s[idx]) && (correlationMap.get(s[idx]) != openStack.pop())){
                valid = false;
            }else if(!correlationMap.has(s[idx])){
                openStack.push(s[idx]);
            }
            idx++;
        }
        if(openStack.length > 0) valid = false;
        return (valid)?('YES'):('NO');
    }
    
  • + 0 comments
    
    
    stack<char> Brackets;
    for(char c : s)
    {
        if(c == '(' || c == '[' || c == '{')
            Brackets.push(c);
        else 
        {
    
            if(Brackets.empty()) return "NO";
            char top = Brackets.top();
            if((c == ')' && top != '(')
            || (c == ']' && top != '[')
            || (c == '}' && top != '{'))
                return "NO";
            else 
                Brackets.pop();   
        }
    }
            return Brackets.empty() ? "YES" : "NO";
    

    }

  • + 0 comments

    The thing to understand is that at any step, when a closing bracket is met, it must be a match for the last encountered opening bracket. Using a stack to track expected next closing bracket does the job .

  • + 0 comments
    def isBalanced(s):
        # Write your code here
        open_bracket = "{[("
        enclose_bracket = "}])"
        pairs = ["{}", "[]", "()"]
        
        if len(s) % 2 != 0:
            return "NO"
        
        if s[0] in enclose_bracket or s[-1] in open_bracket:
            return "NO"
        
        stack = []
        for p in s:
            if p in open_bracket:
                stack.append(p)
            else:
                if len(stack) == 0:
                    return "NO"
                    
                pair = stack.pop() + p
                if pair not in pairs:
                    return "NO"
        
        return "YES"