有效的括号
难度:简单
将括号的映射关系存入哈希map中,注意key为右括号(因为后面需要根据右括号获取左括号),遍历字符串,当遍历到左括号时,存入栈中,当遍历到右括号时,从栈顶取出一个元素(若栈中此时没有元素,意味着右括号先单独出现了,返回false),与右括号对应的左括号判断是否相等,若不相等则返回false,遍历完字符串后,若栈中元素不为空,则返回false,反之返回true。
static Map<Character,Character> map = new HashMap(){{
put(')','(');
put(']','[');
put('}','{');
}};
public static boolean isValid(String s) {
//声明一个栈
Deque<Character> deque = new ArrayDeque<>();
for (int i = 0; i < s.length(); i++) {
//遍历到左括号,往栈中存
if (map.containsValue(s.charAt(i))){
deque.push(s.charAt(i));
}else{
//若遍历到右括号,往栈中取
//若栈中没有元素,证明右括号先单独出现,则直接返回false。
if (deque.size()==0){
return false;
}
Character pop = deque.pop();
if (!pop.equals(map.get(s.charAt(i)))){
return false;
}
}
}
//遍历结束,若栈中元素不为空,则返回false,反之返回true。
if (deque.size()!=0){
return false;
}
return true;
}
执行结果:成功