Професионална програма
Loading...
arnold avatar arnold 29 Точки

Balanced Parentheses (C#)

Тази задача леко започна да ми къса нервите :D Какво ли не пробвах, все до 66/100. Ако някой може да помогне в откриването на грешките в невидимите тестове на judge, ще съм благодарен, защото вече и отделих доста време и започнах да се отчайвам :) 

 

https://pastebin.com/gBS0e9qF

https://judge.softuni.org/Contests/Practice/Index/1447#7

 

Balanced Parentheses

Given a sequence consisting of parentheses, determine whether the expression is balanced. A sequence of parentheses is balanced if every open parenthesis can be paired uniquely with a closed parenthesis that occurs after the former. Also, the interval between them must be balanced. You will be given three types of parentheses: (, {, and [.

{[()]} - This is a balanced parenthesis.

{[(])} - This is not a balanced parenthesis.

Input

  • Each input consists of a single line, the sequence of parentheses.

Output

  • For each test case, print on a new line "YES" if the parentheses are balanced.
    Otherwise, print "NO". Do not print the quotes.

Constraints

  • 1 ≤ lens ≤ 1000, where lens is the length of the sequence.
  • Each character of the sequence will be one of {, }, (, ), [, ].

Examples

Input

Output

{[()]}

YES

{[(])}

NO

{{[[(())]]}}

YES

0
Module: C# Advanced 08/09/2021 17:39:42
Axiomatik avatar Axiomatik 1553 Точки
Best Answer
using System;
using System.Collections.Generic;
 
namespace BalancedParentheses
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
 
            Stack<char> stackParentheses = new Stack<char>();
            bool isSuccess = true;
 
            for (int i = 0; i < input.Length; i++)
            {
                if (input[i] == '{' || input[i] == '[' || input[i] == '(')
                {
                    stackParentheses.Push(input[i]);
                    continue;
                }
                // required to pass error tests
                if (stackParentheses.Count == 0)
                {
                    isSuccess = false;
                    break;
                }
 
                // Peek not Pop, only Pop when valid case
                if (input[i] == '}' && stackParentheses.Peek() == '{' 
                    || input[i] == ']' && stackParentheses.Peek() == '[' 
                    || input[i] == ')' && stackParentheses.Peek() == '(')
                {
                    stackParentheses.Pop();
                }
                else
                {
                    isSuccess = false;
                    break;
                }
            }
 
            if (isSuccess == true)
            {
                Console.WriteLine("YES");
            }
            else
            {
                Console.WriteLine("NO");
            }
        }
    }
}

 

1
arnold avatar arnold 29 Точки

Задачите със стекове и опашки се оказаха доста трудни, иначе като концепция ми изглеждаха лесни, но трудното идва при задачите както винаги

1
09/09/2021 12:25:47