Advertisement
AmirVagapov

Bracket Balance Test C#

Apr 8th, 2023 (edited)
644
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.43 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. class Program {
  4.     static bool TestBracketBalance(string s)
  5.         {
  6.             Stack<int> stk = new Stack<int>();
  7.             foreach (char c in s)
  8.             {
  9.                 int idx = "([{)]}".IndexOf(c);
  10.                 if (idx >= 3)
  11.                 {
  12.                     if (stk.Count == 0 || stk.Pop() != idx) return false;
  13.                 }
  14.                 else if (idx >= 0) stk.Push(idx + 3);
  15.             }
  16.             return stk.Count == 0;
  17.         }
  18.   static void Main() {
  19.     string String = Console.ReadLine();
  20.    
  21.     if(!TestBracketBalance(String)) { Console.WriteLine("Balans skobok narushen"); }
  22.     else { Console.WriteLine("Balans skobok ne narushen"); }
  23.   }
  24. }
  25. /*Если встречается открытая скобка, она закидывается в стек.
  26. Если встречается закрытая скобка, проверяется, что она соответствует открытой скобке на вершине стека и удаляется из стека.
  27. Если вершина стека иная или если стек пустой, то баланс скобок нарушен.
  28. Если без нарушений перебрали всю строку, то проверяем, что стек пустой.
  29. Если пустой, то баланс скобок не нарушен, иначе нарушен.*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement