题目
https://leetcode.com/problems/valid-parentheses/
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
代码
73 / 73 test cases passed.
Runtime: 3 ms
bool isValid(char* s) {
if (s == NULL) return false;
if (s[0] == '\0') return true;
int len = strlen(s);
char *stack = (char*)malloc(len);
stack[0] = s[0];
int top = 0;
int i = 1;
while (s[i] != '\0') {
if (s[i] == ')' && top >= 0 && stack[top] == '('
|| s[i] == ']' && top >= 0 && stack[top] == '['
|| s[i] == '}' && top >= 0 && stack[top] == '{') {
top--;
i++;
} else if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
top++;
stack[top] = s[i];
i++;
} else {
return false;
}
}
free(stack);
return (top<0); // 栈内如果有数据,说明不符合
}