Правильная скобочная последовательность Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа должна определить, является ли данная скобочная последовательность правильной.

Пустая последовательность является правильной. Если A правильная, то последовательности (A), [A], {A} правильные. Если A и B правильные последовательности, то последовательность AB правильная.

Входные данные

В единственной строке записана скобочная последовательность, содержащая не более 100000 скобок.

Выходные данные

Если данная скобочная последовательность правильная, то программа должна вывести строку yes, иначе — строку no.

Примеры
Ввод
Вывод
([])
yes
{)
no

bogdanka1503p08ifa bogdanka1503p08ifa    2   23.06.2020 21:29    26

Ответы
uncu4ek uncu4ek  15.10.2020 14:47

#include <iostream>

#include <stack>

using namespace std;

void solve(string &s){

   stack<char> cur;

   for(int i = 0; i < s.size(); i++){

       if(!cur.empty() && ((cur.top() == '(' && s[i] == ')') || (cur.top() == '{' && s[i] == '}') || (cur.top() == '[' && s[i] == ']')))

           cur.pop();

       else cur.push(s[i]);

   }

   if(cur.empty()) cout << "YES";

   else cout << "NO";

}

signed main() {

   string str;

   cin >> str;

   solve(str);

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика