UVa673
作者:互联网
分析:题很简单,就是栈的应用,如果遇到 [ 或者( 就入栈,如果遇到] 或者 )那么就跟栈顶元素比较(能把人哭死,审题不清,空串没考虑,最后忘清空栈,)
代码
#include<iostream>
#include<stack>
using namespace std;
bool solve(string&a);
stack<char>data;
int main()
{
int T;
scanf("%d",&T);
string str;
getchar();
while(T--)
{
getline(cin,str);//针对与空串
if(solve(str))printf("Yes\n");
else printf("No\n");
int size=data.size();
//清空操作
for(int i=0;i<size;i++)data.pop();
}
}
bool solve(string&a)
{
int len=a.length();
for(int i=0;i<len;i++)
{
if(a[i]=='['||a[i]=='(')data.push(a[i]);
else
{
if(data.empty())return false;//如果当时栈为空,直接返回了
char temp=data.top();data.pop();
if(!((temp=='['&&a[i]==']')||(temp=='('&&a[i]==')')))
//如果不匹配,直接返回
return false;
}
}
//若栈为空,则匹配完成,否则未完成
if(data.empty())return true;
else return false;
}
标签:string,UVa673,int,str,printf,include,空串 来源: https://blog.csdn.net/nicole_coco/article/details/123597963