[算法]有效的括号

    技术2022-07-14  77

    题目

    给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。

    示例

    输入: “()” 输出: true

    输入: “()[]{}” 输出: true

    输入: “(]” 输出: false

    输入: “([)]” 输出: false

    输入: “{[]}” 输出: true

    这是一道简单题,没什么说的

    class Solution { public boolean isValid(String s) { //key是闭括号原因是,待会for的时候遇到是闭括号的时候,需要把对应的开括号拿出来和栈顶进行比较 if(s==null||s.equals("")){ return true; } Map<Character,Character>map = new HashMap<>(); map.put(')','('); map.put(']','['); map.put('}','{'); Stack<Character>stack = new Stack<>(); for(Character c : s.toCharArray()){ if(map.containsKey(c)){ Character top = stack.isEmpty() ? '#' : stack.pop(); if(!top.equals(map.get(c))){ return false; } }else{ stack.push(c); } } return stack.isEmpty(); } }

    举一反三

    Processed: 0.029, SQL: 9