力扣 LeetCode 20. 有效的括号(Day5:栈与队列)
解题思路:
使用栈
只有三种情况
1. ( [ { } ] ( ( 左括号多了 -> 最后栈中经过抵消会剩下括号
2. [ { ( ] } ] 括号不匹配 -> return false
3. [ { } ] ( ) ) ) 右括号多了 -> 未遍历完时,栈提前为空,return false
遇到左括号,在栈中放入对应的右括号
遇到右括号,取出栈顶元素看是否相等,不相等则返回false
最后检查栈是否为空,不为空则对应第一种情况,return false
注意:
s 要先调用 s.toCharArray() 转换为 char[] 类型才可以使用增强型for循环
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() || c != stack.peek()) return false;else stack.pop();}if (stack.isEmpty()) return true;return false;}
}