判断括号匹配
题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
函数接口:bool isValid(char* s)
输入描述
只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串
输出描述
有效或无效
样例输入
{(()[])}
样例输出
有效
完整代码
#include<bits/stdc++.h>
using namespace std;
const int N=10003;
int n,m,j,k,l,i;
string s;
stack<char> a;
int main()
{
a.push('@');
cin>>s;
if(s[0]==']'||s[0]==')'||s[0]=='}')
{
cout<<"无效"<<endl;
return 0;
}
for(i=0;i<s.size();i++)
{
if(s[i]=='['||s[i]=='('||s[i]=='{')
{
a.push(s[i]);
}
if(a.top()=='('&&s[i]==')'||a.top()=='['&&s[i]==']'||a.top()=='{'&&s[i]=='}')
a.pop();
}
a.pop();
if(a.empty()==true)
cout<<"有效"<<endl;
else
cout<<"无效"<<endl;
return 0;
}