Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- class Program {
- static bool TestBracketBalance(string s)
- {
- Stack<int> stk = new Stack<int>();
- foreach (char c in s)
- {
- int idx = "([{)]}".IndexOf(c);
- if (idx >= 3)
- {
- if (stk.Count == 0 || stk.Pop() != idx) return false;
- }
- else if (idx >= 0) stk.Push(idx + 3);
- }
- return stk.Count == 0;
- }
- static void Main() {
- string String = Console.ReadLine();
- if(!TestBracketBalance(String)) { Console.WriteLine("Balans skobok narushen"); }
- else { Console.WriteLine("Balans skobok ne narushen"); }
- }
- }
- /*Если встречается открытая скобка, она закидывается в стек.
- Если встречается закрытая скобка, проверяется, что она соответствует открытой скобке на вершине стека и удаляется из стека.
- Если вершина стека иная или если стек пустой, то баланс скобок нарушен.
- Если без нарушений перебрали всю строку, то проверяем, что стек пустой.
- Если пустой, то баланс скобок не нарушен, иначе нарушен.*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement