这道题利用栈的思想,进行括号匹配,现将基本的左括号类型push栈中,然后依照顺序对比右括号的类型,匹配成功则pop栈,最后检查栈是否为空,若非空,说明含有未成功匹配的括号。
bool isValid(char * s){
if(!s || s[0] == "") return 1;
char *stack = (char *)malloc(strlen(s));
int top = -1;
for(int i = 0; s[i]; i++){
switch(s[i]){
case '(':
case '{':
case '[':stack[++top] = s[i];break;
case ')':if(top < 0 || stack[top--] != '(') return 0;break;
case '}':if(top < 0 || stack[top--] != '{') return 0;break;
case ']':if(top < 0 || stack[top--] != '[') return 0;break;
}
}
if(top >= 0) return 0;
return 1;
}