有效的括号
int match( char a )
{
if( a==']') return '[';
if( a=='}') return '{';
if( a==')') return '(';
return 0;
}
bool isValid(char* s) {
//情况一:奇数个字符
int len = strlen(s);
if( len%2==1 ) return false;
//情况二:偶数个字符
int top=0;
int stack[len+1];
for( int i=0; i<len; i++ )
{
int temp = match( s[i] );
//遍历字符串,左括号入栈。与右括号对比,分为三种情况,左<右,左=右,左>右
if( temp==0 ) stack[top++]=s[i];
else
{
//注意top==0在或前面,top-1在或后面,否则会出现-1的问题
if( top==0 || temp!=stack[top-1] ) return false;
top--;
}
}
return top == 0;
}