bool isValid(char * s){
int str_len = strlen(s);
if(str_len % 2 == 1){
return false;
}
char str_stack[str_len];
int top = 0, i = 0;
for(i = 0; i < str_len; i++){
/*如果是左括号压栈*/
if(s[i] == '{'){
str_stack[top++] = '}';
}else if(s[i] == '['){
str_stack[top++] = ']';
}else if(s[i] == '('){
str_stack[top++] = ')';
}else if( s[i] == '}' || s[i] == ']' || s[i] == ')' ){ /*如果是右括号出栈并对比*/
if(top == 0){
return false;
}else if( str_stack[top-1] != s[i]){
return false;
} else{
str_stack[top--] = 0;
}
}else{
return false;
}
}
return top == 0;
}
class Solution:
def isValid(self, s: str) -> bool:
stack = []
dict = {"]":"[", "}":"{", ")":"("}
for char in s:
if char in dict.values():
stack.append(char)
elif char in dict.keys():
if stack == [] or dict[char] != stack.pop():
return False
else :
return False
return stack == []