Проверить количество скобок

alexbec-2012

Проверить имеется ли в заданном тексте баланс открывающих и закрывающих круглых скобок т. е. верно ли что можно установить взаимно однозначное соответствие открывающих и закрывающих скобок со следующими свойствами: а) открывающияся скобка всегда предшествует закрывающей б) первый и последний символ текста - пара соответствующих друг другу скобокПомогите!
1 ответ

alexbec-2012

#include <iostream>
#include <stack>
#include <string>
 
using namespace std;
 
bool ChkBrackets(const string &Str)
{
    stack<char> Brackets;
 
    for (auto i = 0; i != Str.size(); i++)
        if ( Str[i] == '(' )
            Brackets.push(Str[i]);
        else if ( Str[i] == ')' )
                if (!Brackets.empty() && Brackets.top() == '(')
                    Brackets.pop();
                else return false;
    return Brackets.empty();
}
 
int main()
{
    string str;
    getline(cin,str);
 
    if (ChkBrackets(str)) cout << "YES";
    else cout << "NO";
    return 0;
}