Баланс скобок в математическом выражении - 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;
}