题目描述
假设表达式中包含一种括号:圆括号,其嵌套顺序随意,即(()())或(())等为正确的格式,)(或((())或())均为不正确的格式。检验括号是否匹配可以用堆栈来实现当遇到 ( 时进栈,遇到 ) 时出栈进行匹配检验,如果出现不匹配的情况立即结束,否则继续取下一个字符。如果没有遇到不匹配的情况,最后判断栈是否为空,栈为空,括号匹配,否则不匹配。
输入
包括多组数据。每组1行,为包含括号的表达式。
输出
如果是正确的格式,输出“Yes”,否则输出“No”
样例输入
(()()) (()) (() ()) ( )
样例输出
Yes Yes No No No No
#include <iostream>
#include <stack>
using namespace std;
int main()
{
char a[100];
int i;
while(cin>>a)
{
stack<char> b;
for(i = 0;a[i];i++)
{
if(a[i] == '(')
{
b.push(a[i]);
continue;
}
if(a[i]==')'&& b.size()!=0)
{
b.pop();
continue;
}
else
{
b.push(a[i]);break;
}
}
if(b.empty()==true)
cout <<"Yes\n";
else
cout <<"No\n";
}
return 0;
}