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