有效的括号-leetcode

题目描述

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"

输出:true

示例 2:

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

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

示例 5:

输入:s = "([)]"

输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

解法一

思路:

左括号入栈,遇到右括号,栈顶元素出栈,判断栈顶元素与当前遇到的右括号是否匹配。

代码:

class Solution {
    public boolean isValid(String s) {
        Map<Character, Character> map=new HashMap();
        map.put('{','}');
        map.put('[',']');
        map.put('(',')');
        Deque<Character> stack = new ArrayDeque<>();;
        for(int i=0;i<s.length();i++){
            Character c=s.charAt(i);
            if(c=='{'||c=='['||c=='('){
                stack.push(c);
            }
            if(c=='}'||c==']'||c==')'){
                if(stack.isEmpty()){
                    return false;
                }
                Character ch= (Character) stack.pop();
                if(!map.get(ch).equals(c))
                    return false;
            }
        }
        return stack.isEmpty();
    }

}
posted @ 2026-04-02 20:46  狐狸胡兔  阅读(5)  评论(0)    收藏  举报