Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.96 KB | None | 0 0
  1. namespace _2.ValidBrackets
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             int n = int.Parse(Console.ReadLine());
  8.             List<string> results = new List<string>();
  9.             for (int i = 0; i < n; i++)
  10.             {
  11.                 string brackets = Console.ReadLine();
  12.                 bool isValid = AreBracketsValid(brackets);
  13.                 if (isValid)
  14.                 {
  15.                     results.Add("valid");
  16.                 }
  17.                 else
  18.                 {
  19.                     results.Add("invalid");
  20.                 }
  21.             }
  22.             Console.WriteLine(String.Join(Environment.NewLine, results));
  23.         }
  24.  
  25.         private static bool AreBracketsValid(string brackets)
  26.         {
  27.             Stack<char> opening = new Stack<char>();
  28.             for (int i = 0; i < brackets.Length; i++)
  29.             {
  30.                 if (brackets[i]=='(')
  31.                 {
  32.                     opening.Push(brackets[i]);
  33.                 }
  34.                 else if (brackets[i]==')')
  35.                 {
  36.                     if (opening.Count==0||opening.Pop()!='(')
  37.                     {
  38.                         return false;
  39.                     }
  40.                 }
  41.                 else if (brackets[i] == '*')
  42.                 {
  43.                     bool open = AreBracketsValid(brackets.Substring(0, i) + ")" + brackets.Substring(i + 1));
  44.                     bool close = AreBracketsValid(brackets.Substring(0, i) + "(" + brackets.Substring(i + 1));
  45.                     bool none = AreBracketsValid(brackets.Substring(0, i) + brackets.Substring(i + 1));
  46.                     if (open==true||close==true||none==true)
  47.                     {
  48.                         return true;
  49.                     }
  50.                     return false;
  51.                 }
  52.             }
  53.             if (opening.Count!=0)
  54.             {
  55.                 return false;
  56.             }
  57.             return true;
  58.         }
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement