有效括号判断
Alan最近眼神不好使,经常分不清楚括号,所以想请你帮忙,给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,想让你帮忙编写程序确定括号是否都是正常闭合。
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 空字符串被认定为True
输入格式:
输入空字符串或一行只包含’(’,’)’,’{’,’}’,’[’,’]’ 的字符串。
输出格式:
如果所有括号正确闭合,输出“True”,否则输出“False”。
输入样例:
在这里给出一组输入。例如:
()
结尾无空行
输出样例:
在这里给出相应的输出。例如:
True
结尾无空行
输入样例:
在这里给出一组输入。例如:
{[()]()}
结尾无空行
输出样例:
在这里给出相应的输出。例如:
True
结尾无空行
输入样例:
在这里给出一组输入。例如:
{{()[]}
结尾无空行
输出样例:
在这里给出相应的输出。例如:
False
结尾无空行
AC代码
#include<bits/stdc++.h>
using namespace std;
stack<char>A;
int main()
{
char a[10005];
cin>>a;
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='('||a[i]=='['||a[i]=='{')
{
A.push(a[i]);
}
else
{
if(A.empty())
{
cout<<"False"<<endl;
return 0;
}
else if(a[i]==')'&&A.top()!='(')
{
cout<<"False"<<endl;
return 0;
}
else if(a[i]=='}'&&A.top()!='{')
{
cout<<"False"<<endl;
return 0;
}
else if(a[i]==']'&&A.top()!='[')
{
cout<<"False"<<endl;
return 0;
}
else
A.pop();
}
}
if(A.empty())
cout<<"True"<<endl;
else
cout<<"False"<<endl;
return 0;
}