标签搜索

目 录CONTENT

文章目录

[leetcode]有效的括号问题的解题思路

沙漠渔
2022-05-17 08:27:58 / 0 评论 / 0 点赞 / 395 阅读 / 1,818 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目说明

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

示例 4:

输入:s = "([)]"
输出:false

示例 5:

输入:s = "{[]}"
输出:true

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成
Related Topics
  • 字符串
  • 解决方案

    package leetcode.editor.cn;
    
    import java.util.*;
    
    /**
     * 有效的括号
     *
     * @author 沙漠渔
     * @date 2022-01-26 15:03:18
     */
    public class 有效的括号 {
        static
    //leetcode submit region begin(Prohibit modification and deletion)
        class Solution {
            public boolean isValid(String s) {
                Map<Character, Character> map = new HashMap<Character, Character>() {{
                    put(')', '(');
                    put(']', '[');
                    put('}', '{');
                }};
                Deque<Character> deque = new ArrayDeque<>();
                for (int i = 0; i < s.length(); i++) {
                    if (map.containsKey(s.charAt(i))) {
                        if (!Objects.equals(deque.poll(), map.get(s.charAt(i)))) {
                            return false;
                        }
                    } else {
                        deque.push(s.charAt(i));
                    }
                }
                if (deque.size() == 0) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    //leetcode submit region end(Prohibit modification and deletion)
    
        static class ListNode {
            int val;
            ListNode next;
    
            public ListNode(int val) {
                this.val = val;
            }
    
            public ListNode(int val, ListNode next) {
                this.val = val;
                this.next = next;
            }
        }
    
        /**
         * 最终测试主方法
         */
        public static void main(String[] args) {
            Solution solution = new Solution();
            System.out.println(solution.isValid("(([))"));
        }
    }
    
    0
    广告 广告

    评论区