思路:(1)遇到左括号就入栈。
(2) 遇到右括号就出栈,将出栈的数据和右括号相比较,如果不匹配,则return false;如果匹配,就继续向后,循环上述过程。
注意:如果最后栈空,如果括号不匹配,return false;
如果括号匹配,但是右括号剩余,return false;
如果最后栈不为空,return false;
代码为
bool isValid(char * s){
int n=strlen(s);
char stack[n+1];
int top=0;
while(*s)
{
if((*s=='(')||(*s=='{')||(*s=='['))
{ stack[top]=*s;
top++;
s++;
}
else{
if(top>0)
top--;
else{
return false;
}
if((stack[top]=='(')&&(*s==')')
||(stack[top]=='{')&&(*s=='}')
||(stack[top]=='[')&&(*s==']'))
{
s++;
}
else
{
return false;
}
}
}
if(top>0)
return false;
return true;
}