You are given a string consisting of parentheses () and []. A string of this type is said to be correct:(a) if it is the empty string(b) if A and B are correct, AB is correct,(c) if A is correct, (A) and [A] is correct.Write a program that takes a sequence of strings of this type and check their correctness. Yourprogram can assume that the maximum string length is 128.
Input
The file contains a positive integer n and a sequence of n strings of parentheses ‘()’ and ‘[]’, one stringa line.
Output
A sequence of ‘Yes’ or ‘No’ on the output file.
Sample Input
3
([])(([()])))([()[]()])()
Sample Output
Yes
No
Yes
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main()
{
int T;
scanf("%d ", &T);
while(T--)
{
char f[150];
stack<char>ch;
int len = 0, flag = 1;
while((f[len] = getchar()) != '\n')
{
++len;
}
for(int i = 0; i < len; ++i)
{
if(f[i] == '(' || f[i] == '[')
{
ch.push(f[i]);
}
else if(f[i] == ')')
{
if(ch.empty())
{
flag = 0;
break;
}
if(ch.top() == '(')
ch.pop();
}
else if(f[i] == ']')
{
if(ch.empty())
{
flag = 0;
break;
}
if(ch.top() == '[')
ch.pop();
}
}
if(ch.empty() && flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}