今天做了好多水题=_=
简单说一下这个题吧,很经典的栈的应用。当输入字符是 s[i] == '(' || s[i] == '[' || s[i] == '{' || top == -1 的时候,字符入栈,否则判断符号是否匹配。这个时候可以通过ASCII值来判断符号的匹配情况。
bool isValid(char * s){
int len = strlen(s);
if(len == 0){
return true;
}
char *stack = (char *)malloc(sizeof(char) * len);
int top = -1;
for(int i = 0;i < len; i++){
if(s[i] == '(' || s[i] == '[' || s[i] == '{' || top == -1){
stack[++top] = s[i];
}
else if(s[i] - stack[top] == 1 || s[i] - stack[top] == 2){
top--;
}else{
return false;
}
}
if(top > -1){
return false;
}
return true;
}