跳到主要内容

20.有效的括号

序号题目难度
20题目链接简单

题目大意​

给定一个只包括 '(',')',',','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。

示例 1:​

输入:s = "()"

输出:true

示例 2:​

输入:s = "()[]"

输出:true

示例 3:​

输入:s = "(]"

输出:false

示例 4:​

输入:s = "([])"

输出:true

示例 5:​

输入:s = "([)]"

输出:false

提示:​

1 <= s.length <= 104 s 仅由括号 '()[]{}' 组成

参考答案​

class Solution {
public boolean isValid(String s) {
if(s.length() % 2 != 0) return false;
Stack<Character> stack = new Stack<>();

for(char c : s.toCharArray()){
if(c =='('){
stack.push(')');
}else if(c == '['){
stack.push(']');
}else if(c == '{'){
stack.push('}');
}else{
if(stack.isEmpty() || stack.pop() != c){
return false;
}
}
}
return stack.isEmpty();
}
}