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