class Solution {
public:
bool isValid(string s) {
int flag=1; //标志位
int len=s.size();
if(len==0)
{
return true;
} //判断输入是否为空
char str[len];
int top=0; //栈的顶部位置
for(int j=0;j<len;j++)
{
if(s[j]=='(')
{
str[top]='('; //入栈
top++;
}
if(s[j]=='[')
{
str[top]='['; //入栈
top++;
}
if(s[j]=='{')
{
str[top]='{'; //入栈
top++;
}
if(s[j]==')')
{
if(top<1)
{
return false; //出栈前要检验
}
top--;
if(str[top]!='(')
{
flag=0;
break;
}
}
if(s[j]==']')
{
if(top<1)
{
return false; //出栈前要检验
}
top--;
if(str[top]!='[')
{
flag=0;
break;
}
}
if(s[j]=='}')
{
if(top<1)
{
return false; //出栈前要检验
}
top--;
if(str[top]!='{')
{
flag=0;
break;
}
}
}
if(top==0&&flag==1) //判断标志位,判断是否在栈底(栈内是否为空)
{
return true;
}
else
{
return false;
}
}
};