#20 Valid Parentheses
Posted cynchanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#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的主要内容,如果未能解决你的问题,请参考以下文章