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

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

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

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

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

textual
Листинг программы
  1.         static bool Check(string s)
  2.         {
  3.             char[] opening = { '(', '{', '[' };
  4.             char[] closing = { ')', '}', ']' };
  5.  
  6.             Stack<char> brackets = new Stack<char>();
  7.             foreach (var symbol in s)
  8.             {
  9.                 int i;
  10.                 if (Array.IndexOf(opening, symbol) > -1)
  11.                 {
  12.                     brackets.Push(symbol);
  13.                 }
  14.                 else if ((i = Array.IndexOf(closing, symbol)) > -1)
  15.                 {
  16.                     if (brackets.Count == 0 || brackets.Pop() != opening[i])
  17.                     {
  18.                         return false;
  19.                     }
  20.                 }
  21.             }
  22.             return brackets.Count == 0;
  23.         }

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


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

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

5   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы