Advertisement
SavaIv

Untitled

Sep 17th, 2020 (edited)
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace _08._Balanced_Parenthesis
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. // { --> 1
  11. // } --> -1
  12. // ( --> 2
  13. // ) --> -2
  14. // [ --> 3
  15. // ] --> -3
  16. // отваряща скоба, последвана от затваряща скоба --> сбора им е 0
  17.  
  18. string input = Console.ReadLine();
  19.  
  20. // в стака слагаме само отварящи скоби (int еквивалента им т.е +)
  21. Stack<int> openBrackets = new Stack<int>();
  22.  
  23. bool balancedBrackets = true;
  24.  
  25. for (int i = 0; i < input.Length; i++)
  26. {
  27. char tempChar = input[i];
  28. int tempInt = 0;
  29.  
  30. switch (tempChar)
  31. {
  32. case '{': tempInt = 1; break;
  33. case '}': tempInt = -1; break;
  34. case '(': tempInt = 2; break;
  35. case ')': tempInt = -2; break;
  36. case '[': tempInt = 3; break;
  37. case ']': tempInt = -3; break;
  38.  
  39. default: break;
  40. }
  41.  
  42. // в стака пъхаме само отворени скоби
  43. if (tempInt > 0)
  44. {
  45. openBrackets.Push(tempInt);
  46. continue;
  47. }
  48.  
  49. // проверка за затваряща скоба при условие, че няма отваряща скоба преди нея
  50. if (openBrackets.Count == 0)
  51. {
  52. balancedBrackets = false;
  53. break;
  54. }
  55.  
  56. // ако подавания член е положителен - го записваме в стака
  57. // ако подавания член е ортицателен го сравняваме с най-горния в стака
  58. // ако съответства - ОК, "продължаваме напред"
  59. // ако ли не - значи сме до тук, защото сме разбалансирани
  60.  
  61. if (tempInt > 0)
  62. {
  63. openBrackets.Push(tempInt);
  64. continue;
  65. }
  66. else
  67. {
  68. int tempStackPeek = openBrackets.Peek();
  69.  
  70. if ((tempStackPeek + tempInt) == 0)
  71. {
  72. openBrackets.Pop();
  73. }
  74. else
  75. {
  76. balancedBrackets = false;
  77. break;
  78. }
  79. }
  80. }
  81.  
  82. if (balancedBrackets)
  83. {
  84. Console.WriteLine("YES");
  85. }
  86. else
  87. {
  88. Console.WriteLine("NO");
  89. }
  90.  
  91. //Console.WriteLine("Hello World!");
  92. }
  93. }
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement