Написать программу, которая определяет, является ли скобочное выражение правильным - C#
Формулировка задачи:
Подскажите как написать программу на С++ или С#, которая определяет, является ли скобочное
выражение правильным. Примеры правильных скобочных выражений: (),
(())(), ()(), ((())) и неправильных: )(, ())((), (, )))), ((()). Указание:
рассматриваем последовательно каждый символ заданной строки слева
направо. Если очередной символ – левая скобка, то размещаем ее в стеке,
если правая – то извлекаем элемент из стека (это обязательно должна
быть левая скобка) . После рассмотрения всей строки, если выражение
правильно, стек должен оказаться пустым.
Решение задачи: «Написать программу, которая определяет, является ли скобочное выражение правильным»
textual
Листинг программы
- static bool TestParenthesis(string source)
- {
- Stack<int> stack = new Stack<int>();
- foreach (char character in source)
- {
- int index = "([{)]}".IndexOf(character);
- if (index >= 3)
- {
- if (stack.Count == 0 || stack.Pop() != index) return false;
- }
- else if (index >= 0) stack.Push(index + 3);
- }
- return stack.Count == 0;
- }
- static void Main(string[] args)
- {
- string goodSource = "{[]}[]()";
- Console.WriteLine(TestParenthesis(goodSource));
- string basSource = "{[]}[])";
- Console.WriteLine(TestParenthesis(basSource));
- Console.ReadKey();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д