Баланс скобок в математическом выражении - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д