leetcode第20题(有效的括号)
思路解析(使用栈):
-
使用一个栈来保存左括号。
-
每当遇到一个右括号时,检查栈顶元素是否是匹配的左括号。
-
如果匹配,则弹出栈顶元素;
-
如果不匹配或者栈为空,则说明无效;
-
-
最后如果栈为空,说明全部括号匹配成功。
#define MAX 100000
bool isValid(char* s) {char stack[MAX];int top = -1;for(int i = 0; s[i] != '\0'; i++){if(s[i] == '(' || s[i] == '[' || s[i] == '{'){if(top < MAX - 1){stack[++ top] = s[i];}else{return false; //栈满}}else if (s[i] == ')' || s[i] == ']' || s[i] == '}'){if(top == -1){return false;}else if ((s[i] == ')' && stack[top] == '(') || (s[i] == ']' && stack[top] == '[') || (s[i] == '}' && stack[top] == '{')){top--;}else{return false;}}else{return false;}}return top == -1;
}