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