1. 题目
2. 分析
这题相信大家在学习栈的数据结构的时候就知道这道题目了,通过左边的括号入栈,右边的括号和栈顶的括号进行匹配。
- 注意遍历字符串过程中,栈需要判断是否为空
- 注意遍历完字符串之后,再判断栈不为空说明有多余的括号,不匹配
3. 代码
public boolean isValid(String s) {
Deque<Character> deque = new ArrayDeque<>();
for (int i = 0; i < s.length(); i++) {
if ('(' == s.charAt(i) || '[' == s.charAt(i) || '{' == s.charAt(i)) {
deque.push(s.charAt(i));
} else {
if (deque.isEmpty()) {
return false;
}
char c = deque.pop();
if (('(' == c && ')' == s.charAt(i)) || ('[' == c && ']' == s.charAt(i)) || ('{' == c && '}' == s.charAt(i))) {
continue;
}
return false;
}
}
return deque.isEmpty();
}