#20 Valid Parentheses
题目链接: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.
typedef struct StackRecord { //不考虑溢栈实现简单的堆栈
char ch[100];
int top;
}*Stack;
bool isEmpty(Stack stack) {
if (stack->top >= 0)
return false;
return true;
}
Stack init() {
Stack stack = (Stack)malloc(sizeof(struct StackRecord));
stack->top = -1;
return stack;
}
void push(char ch, Stack stack) {
stack->ch[++stack->top] = ch;
}
char top(Stack stack) { //返回栈顶元素,空栈时返回'\0'
if(!isEmpty(stack))
return stack->ch[stack->top];
return 0;
}
void pop(Stack stack) {
--stack->top;
}
bool isValid(char* s) {
Stack stack = init();
while (*s) {
switch (*s) {
case '(': //左括号入栈
case '[':
case '{':
push(*s, stack);
break;
case ')': //右括号。查看栈顶是否为相应左括号。不是返回false;否则出栈
if (top(stack) != '(')
return false;
pop(stack);
break;
case ']':
if (top(stack) != '[')
return false;
pop(stack);
break;
case '}':
if (top(stack) != '{')
return false;
pop(stack);
break;
default:
return false;
}
++s;
}
if (!isEmpty(stack)) //栈内不空说明有多余左括号
return false;
return true;
}
posted on 2017-06-22 08:49 cynchanpin 阅读(155) 评论(0) 收藏 举报
浙公网安备 33010602011771号