Check the syntax of the mathematical expression

using System;
using System.Collections.Generic;

namespace checkMathExpression
{
    class Program
    {
        static void Main(string[] args)
        {
            bool error = false;
            var str = "( a[i]+{-1}*(8-9) )";
            Stack<char> stack = new Stack<char>();
            foreach (var item in str.ToCharArray())
            {
                if (item == '(' || item == '{' || item == '[')
                {
                    stack.Push(item);
                }
                else if (item == ')' || item == '}' || item == ']')
                {
                    if (stack.Peek() != GetComplementBracket(item))
                    {
                        error = true;
                        break;
                    }
                }
            }

            if (error)
                Console.WriteLine("Incorrect brackets");
            else
                Console.WriteLine("Brackets are fine");
            Console.ReadLine();
        }

        private static char GetComplementBracket(char item)
        {
            switch (item)
            {
                case ')':
                    return '(';
                case '}':
                    return '{';
                case ']':
                    return '[';
                default:
                    return ' ';
            }
        }
    }
}

Another Implementation

using System;
using System.Collections.Generic;
namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] values = new string[] { "2", "{}[]()", "{[}]}" };
            var res = braces(values);
            for (int res_i = 0; res_i < res.Length; res_i++)
            {
                Console.WriteLine(res[res_i]);
            }
            Console.Read();
        }

        static string[] braces(string[] values)
        {
            bool error = false;
            Stack<char> stack = new Stack<char>();
            List<string> output = new List<string>();
            foreach (var str in values)
            {
                int n;
                bool isNumber = int.TryParse(str, out n);
                if (!isNumber)
                {
                    foreach (var item in str.ToCharArray())
                    {
                        if (item == '(' || item == '{' || item == '[')
                        {
                            stack.Push(item);
                        }
                        else if (item == ')' || item == '}' || item == ']')
                        {
                            if (stack.Peek() != CheckCorrectness(item))
                            {
                                error = true;
                                break;
                            }
                        }
                    }
                    if (error)
                        output.Add("NO");
                    else
                        output.Add("YES");
                }
            }
            return output.ToArray();
        }
        private static char CheckCorrectness(char item)
        {
            switch (item)
            {
                case ')':
                    return '(';
                case '}':
                    return '{';
                case ']':
                    return '[';
                default:
                    return ' ';
            }
        }
    }
}

results matching ""

    No results matching ""