Написать алгоритм проверки корректности регулярного выражения - C#
Формулировка задачи:
Следующая задача. Есессно на шарпе)
написать алгоритм проверки корректности регулярного выражения, которое включает [,],(,)
т.е, например ([][[]()]) - правильно, ([][]()]) - неправильно
Решение задачи: «Написать алгоритм проверки корректности регулярного выражения»
textual
Листинг программы
using System; using System.Collections.Generic; namespace JustForFun { class MainClass { static void Main () { // Просто прогон тестов Console.WriteLine ("Результат: " + TryParse ("([]([()]))")); Console.WriteLine ("Результат: " + TryParse (")(")); Console.WriteLine ("Результат: " + TryParse ("[(])")); Console.WriteLine ("Результат: " + TryParse ("[()]([])")); Console.ReadLine (); } const string openBrackets = "(["; const string closeBrackets = ")]"; static bool TryParse (string expression) { // Инициализация стека Stack<char> stack = new Stack<char> (); int index; foreach (var symbol in expression) { // Если очередной символ - открывающая скобка // Дословно если удается найти символ в строке "openBrackets" if (openBrackets.IndexOf (symbol) != -1) { // Добавляем открывающуюся скобку в стек stack.Push (symbol); } // Если очередной символ - закрывающая скобка else if ((index = closeBrackets.IndexOf (symbol)) != -1) { // Если стек не пуст и последнее добавленная в него открывающаяся скобка // соответствует текущей закрывающейся скобке if (stack.Count != 0 && stack.Peek () == openBrackets[index]) { // Удалить последнюю открывающуюся скобку из стека. stack.Pop (); } } // Если какой - то левый символ else { return false; } } return stack.Count == 0; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д