Balanced Brackets

Sort by

recency

|

254 Discussions

|

  • + 0 comments

    Could anyone please tell what i am doing wrong in this code. 3 test cases are failing -

    function isBalanced(s) {
        // Write your code here
        if(!s || s == "" ) {
            return "NO"
        }
        let arr = s.split("");
        let arrLength = arr.length;
        if((arrLength % 2) != 0) {
            return "NO"
        }
        let bracketsObj = {
            "(": ")",
            "{": "}",
            "[": "]"
        };
        let closingBrackets = Object.values(bracketsObj);
        let tempArray = [];
        for(let i = 0; i< arrLength; i++) {
            let isMatched = false;
            if(closingBrackets.includes(arr[i])) {
                if(bracketsObj[tempArray.pop()] != arr[i]) {
                    return "NO";
                }
            } else {
                tempArray.push(arr[i]);
            }
        }
        return "YES"
    }
    
  • + 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';
    }