O(n),为了优化空间的话可以动态按需分配栈空间能使用更小的空间,比如可以使用双向链表来优化,不过需要在链表的指针空间和测试用例中是长字符串快速不匹配还是长串临近结尾不匹配或直接匹配做权衡,如果是后者肯能带来更多的内存消耗.
bool isValid(char * s){
char *stack=malloc(sizeof(char)*strlen(s));
int idx=0;
char c=*s;
while(c!='\0'){
switch(c){
case '(':
stack[idx++]=c;
break;
case '{':
stack[idx++]=c;
break;
case '[':
stack[idx++]=c;
break;
case ')':
if(idx<1||stack[--idx]!='('){
return false;
}
break;
case '}':
if(idx<1||stack[--idx]!='{'){
return false;
}
break;
case ']':
if(idx<1||stack[--idx]!='['){
return false;
}
break;
}
c=*(++s);
}
return idx<1;
}