Balanced Brackets

  • + 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";
        }