如果括号有效,则一定是成对出现的,且需要最长的栈长度是 len/2,while前判断开头是否为右括号,则while中右括号出栈不需要考虑是空栈
bool isValid(char * s){
int j = 0;
int len = strlen(s);
char stack[len/2+1];
if (0 == len) return true;
else if(len % 2) return false;
if ((')' == s[0])||(']' == s[0])||('}' == s[0]))return false;
while(*s){
switch (*s){
case '(':
case '[':
case '{':
if(j >= len/2){
return false;
}
stack[j++] = *s;
break;
case ')':
if (stack[--j] != '('){
return false;
}
break;
case ']':
if (stack[--j] != '['){
return false;
}
break;
case '}':
if (stack[--j] != '{'){
return false;
}
break;
default:
break;
}
s++;
}
if (0 != j){
return false;
}else{
return true;
}
}