算法-字符串-有效的括号

在这里插入图片描述
在这里插入图片描述

这种判断成对的就用栈比较好

class Solution {
    
    
    public boolean isValid(String s) {
    
    
        if(s.length() % 2 == 1) {
    
    //括号为奇数  
            return false;
        }

        Stack<Character> stack = new Stack<>();
        //用map来保存括号对  用来判断很方便
        Map<Character, Character> map = new HashMap<>();

        //因为是左括号入栈  右括号判断 通过右括号来获取左括号 与栈顶元素比较  一样就出栈
        //所以key为右括号
        map.put(')', '(');
        map.put(']', '[');
        map.put('}', '{');

        for(int i = 0; i < s.length(); i++) {
    
    
            char cur = s.charAt(i);

            if(map.containsKey(cur)) {
    
    
                //如果包含说明是右括号  判断

                if(stack.isEmpty() || stack.peek() != map.get(cur)) {
    
    
                    return false;
                }
                stack.pop();
            }else {
    
    
                //不包含 说明是左括号 左括号就入栈
                stack.push(cur);
                
            }
        }
		//栈为空都匹配成功
        return stack.isEmpty();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/113613750
今日推荐