本次题目
20 有效的括号
- 栈:实现括号匹配,建议使用deque(即可以实现队列也可以实现栈)。
- 当输入左括号时将对应的右括号push入栈,当输入右括号时,判断是否与栈顶元素相同,相同则出栈,不相同则返回false。
- 当字符串遍历结束后,如果栈为空则返回true,否则返回false。
- 注意:当字符串还未遍历结束栈为空也返回false。deque可直接使用push,pop和peek。
class Solution {
public boolean isValid(String s) {
Deque<Character> deque = new LinkedList<>();
char[] sArr = s.toCharArray();
for(char ch : sArr){
if(ch == '('){
deque.addFirst(')');
}else if(ch == '['){
deque.addFirst(']');
}else if(ch == '{'){
deque.addFirst('}');
}else if(deque.isEmpty() || ch != deque.getFirst()){
return false;
}else{
deque.removeFirst();
}
}
return deque.isEmpty();
}
}