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