借助栈来实现括号的匹配。
用了感觉有点冗余的if else语句,其实改为switch代码会更加的简洁。
bool isValid(char * s){
int i=0,j=0,length = strlen(s);
char *stack = (char*)malloc(sizeof(char)*length);
if(s[i]==0) //0在ASCII码中代表NULL
return true;
while(s[i] != 0){
if(j==0 && ((s[i]==')') || (s[i]=='}') || (s[i]==']'))) //在栈为空的情况下,往栈里面添加')','}',']'都不可能匹配了。
return false;
if(i==0 || (s[i]=='(') || (s[i]=='{') || (s[i]=='[')){
stack[j++]=s[i++];
}else if(s[i]==')'){
if(stack[j-1]=='('){
stack[--j]=0;
i++;
}
else
stack[j++]=s[i++];
}else if(s[i]=='}'){
if(stack[j-1]=='{'){
stack[--j]=0;
i++;
}
else
stack[j++]=s[i++];
}else if(s[i]==']'){
if(stack[j-1]=='['){
stack[--j]=0;
i++;
}
else
stack[j++]=s[i++];
}
}
if(stack[0]==0)
return true;
else
return false;
}