Leetcode Hot100 子串
[20.有效的括号]https://leetcode.cn/problems/valid-parentheses/description/?envType=study-plan-v2&envId=top-100-liked
class Solution {
public boolean isValid(String s) {
// 如果字符串长度为奇数,不可能匹配成功
if (s.length() % 2 != 0) return false;
// 使用字符数组模拟栈
char[] stack = new char[s.length()];
int top = -1;
for (char c : s.toCharArray()) {
// 左括号直接入栈
if (c == '(' || c == '[' || c == '{') {
stack[++top] = c;
} else {
// 栈为空且先进来的是右括号时,直接返回false
if (top == -1) return false;
// switch语句比HashMap查找更快
if ((c == ')' && stack[top] != '(') ||
(c == ']' && stack[top] != '[') ||
(c == '}' && stack[top] != '{')) {
return false;
}
// 匹配成功,使用数组下标移动模拟弹出栈顶元素
top--;
}
}
// 下标移动到初始==栈清空==所有括号都匹配成功
return top == -1;
}
}