Баланс скобок в математическом выражении - C#

Узнай цену своей работы

Формулировка задачи:

В математическом выражении встречаются скобки трех типов: круглые, квадратные и фигурные Дана строка, задающая математическое выражение. Проверить выполняется ли баланс скобок в выражении, учитывая, что закрывающая скобка должна быть того же типа, что и соответствующая ей открывающая. Например, выражение (A-(B+C]}-D/{A+C) – является неправильным; выражение {x+(y-[a+b])c-[(d+e)]}/(h-(j-(k-[1-n]))) - является правильным. Для реализации алгоритма использовать структуру данных стек.

Решение задачи: «Баланс скобок в математическом выражении»

textual
Листинг программы
        static bool Check(string s)
        {
            char[] opening = { '(', '{', '[' };
            char[] closing = { ')', '}', ']' };
 
            Stack<char> brackets = new Stack<char>();
            foreach (var symbol in s)
            {
                int i;
                if (Array.IndexOf(opening, symbol) > -1)
                {
                    brackets.Push(symbol);
                }
                else if ((i = Array.IndexOf(closing, symbol)) > -1)
                {
                    if (brackets.Count == 0 || brackets.Pop() != opening[i])
                    {
                        return false;
                    }
                }
            }
            return brackets.Count == 0;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы