题目链接: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;
}
本文介绍了一个算法用于判断字符串中括号是否匹配并正确闭合,包括常见括号类型如(, ), {, }
908

被折叠的 条评论
为什么被折叠?



