Advertisement
desislava_topuzakova

Balanced Brackets

May 19th, 2022
857
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Balanced
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             //бр. отворени == бр. затворени
  11.             //последната отворена трябва да съвпада с последната затворена
  12.             string input = Console.ReadLine(); //"{[()]}"
  13.             Stack<char> openBrackets = new Stack<char>(); //отворени скоби
  14.             bool areBalanced = false;
  15.             //true -> балансирани
  16.             //false -> не са балансирани
  17.            
  18.             foreach (char bracket in input)
  19.             {
  20.                 //проверка за отворена скоба
  21.                 if (bracket == '{' || bracket == '[' || bracket == '(')
  22.                 {
  23.                     openBrackets.Push(bracket);
  24.                 }
  25.                 //проверка за затворена скоба
  26.                 else if (bracket == '}' || bracket == ']' || bracket == ')')
  27.                 {
  28.                     //проверка дали имаме отворени скоби
  29.                     if (openBrackets.Count == 0)
  30.                     {
  31.                         //проверка дали имаме отворени скоби
  32.                         areBalanced = false;
  33.                         break;
  34.                     }
  35.  
  36.                     //проверка дали последната отворена съвпада с текущата скоба
  37.                     char lastOpen = openBrackets.Pop();
  38.  
  39.                     //{ и }
  40.                     if (lastOpen == '{' && bracket == '}')
  41.                     {
  42.                         //баланс
  43.                         areBalanced = true;
  44.                     }
  45.                     //[ и ]
  46.                     else if (lastOpen == '[' && bracket == ']')
  47.                     {
  48.                         //баланс
  49.                         areBalanced = true;
  50.                     }
  51.                     //( и )
  52.                     else if (lastOpen == '(' && bracket == ')')
  53.                     {
  54.                         //баланс
  55.                         areBalanced = true;
  56.                     }
  57.                     else
  58.                     {
  59.                         //последната отворена не съвпада с текущата затворена
  60.                         areBalanced = false;
  61.                         break;
  62.                     }
  63.                 }
  64.             }
  65.             //преминали сме през всички скоби
  66.             //ако има баланс -> YES
  67.             if (areBalanced)
  68.             {
  69.                 Console.WriteLine("YES");
  70.             }
  71.             //ако няма баланс -> NO
  72.             else
  73.             {
  74.                 Console.WriteLine("NO");
  75.             }
  76.         }
  77.     }
  78. }
  79.  
Advertisement
RAW Paste Data Copied
Advertisement