思路:
遍历每一个字符,如果是左括号,就向栈中存入右括号,这样当遇到右括号的时候,就不需要逐一判断每一种类型的左括号,只要判断是否于栈中需要的右括号一致即可。
总结:
遇到左括号存入右括号表示想要匹配,下一个需要遇到的括号类型。这样只需要判断相等就可以了,不需要判断括号的类型。
代码:
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for(char c : s.toCharArray()) {
if(c == '(') {
stack.push(')');
}
else if(c == '{') {
stack.push('}');
}
else if(c == '[') {
stack.push(']');
}
else if(!stack.isEmpty() && stack.peek().equals(c)) {
stack.pop();
}
else {
return false;
}
}
return stack.isEmpty();
}
}
参考: