每天一道算法题

LeetCode第20题,是否有效括号

这道题非常简单,不多说了,用栈直接实现即可。

/**
     * 思路:压栈,遇到右括号就取栈数据做对比
     */
    public static boolean isValid(String s) {
        int n = s.length();
        if (n % 2 == 1) {
            return false;
        }

        Map<Character, Character> pairs = new HashMap<Character, Character>() {{
            put(')', '(');
            put(']', '[');
            put('}', '{');
        }};
        Deque<Character> stack = new LinkedList<>();
        for (int i = 0; i < n; i++) {
            char ch = s.charAt(i);
            if (pairs.containsKey(ch)) {
                if (stack.isEmpty() || stack.peek().equals(pairs.get(ch))) {
                    return false;
                }
                stack.pop();
            } else {
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如果每天做一道算法题,那是不是每天都在进步? 前言 这个活动是从2019年7月中旬开始的,人数不算多,也就几个好友...
    鸡汤小弟阅读 2,593评论 0 2
  • 前言 算法这个活动很严,每天必须打卡,而且不限制语言,群内已有PHP、Python、Java、Javascript...
    鸡汤小弟阅读 2,860评论 5 4
  • Leetcode第9题:回文数,第七题也可以用这题的解法直接解 这道题首先直接排除负数,然后正数直接反转判断与原值...
    白小贱_337e阅读 708评论 0 0
  • LeetCode第11题:盛最多水的容器 这道题看似复杂,其实很简单,首先相同高度肯定是距离越远容量越大,所以可以...
    白小贱_337e阅读 715评论 0 0
  • LeetCode第五题:最长回文子串 首先暴力破解,双层循环,内层遍历判断每一个坐标包含的字符串是否是回文,是则判...
    白小贱_337e阅读 903评论 0 0