首页 > 代码库 > #20 Valid Parentheses
#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; }
#20 Valid Parentheses
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。