Balanced Brackets

Sort by

recency

|

253 Discussions

|

  • + 0 comments

    C# solution. For once I actually liked the question.

    public static string isBalanced(string s)
        {
            if (s.Length % 2 != 0) return "NO";
            
            var OpeningBrackets = new char[] {'[', '{', '('};
            var openingBracketsStack = new Stack<char>();
            
            foreach(var bracket in s)
            {
                if (OpeningBrackets.Contains(bracket))
                {
                    openingBracketsStack.Push(bracket);
                    continue;
                }
                
                if (openingBracketsStack.Count == 0) return "NO";
                
                switch (bracket)
                {
                    case ']':
                        if (openingBracketsStack.Pop() != '[') return "NO";
                        continue;
                    case '}':
                        if (openingBracketsStack.Pop() != '{') return "NO";
                        continue;
                    case ')':
                        if (openingBracketsStack.Pop() != '(') return "NO";
                        continue;
                    default:
                        return "NO";
                }
            }
            
            return openingBracketsStack.Count > 0 ? "NO" : "YES";
        }
    
  • + 1 comment

    How is this problem intermediate yet there are absolute insane problems that take me 30-45 minutes to even understand what they're asking under "easy"?

    This is the easiest question I've ever answered and an ACTUAL REAL WORLD PROBLEM UNLIKE 95% OF THE BS ON THIS SITE.

  • + 0 comments
        public static string isBalanced(string s)
        {
            Stack<char> brackets = new Stack<char>();
            
            foreach(char bracket in s){
                if(brackets.TryPeek(out char last) && last == Opposite(bracket)) brackets.Pop();
                else brackets.Push(bracket);
            }
            
            if(brackets.Any()) return "NO";
            
            return "YES";
        }
        
        public static char Opposite (char bracket){
            switch(bracket){
                case '}' : return '{';
                case ')' : return '(';
                case ']' : return '[';            
            }
            return default;
            
        }
    
  • + 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');
    }