leetcode 20. 有效的括号 Java

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

有效字符串需满足:

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成
class Solution{
		public boolean isValid(String s){
      int length = s.length();
      if(length % 2 == 1){
        return false;       // 如果不是成对的则直接返回错误
      }
      Map<Character,Character> map = new HashMap<Character,Character>();
      map.put(')','(');
      map.put(']','[');
      map.put('}','{');
      Deque<Character> stack = new ArrayDeque<Character>();
      for(int i = 0;i<length;i++){
       		char ch = s.charAt(i);   
        	if(map.containsKey(ch)){   // 如果ch为右括号
                  if(stack.isEmpty()||stack.peek()!=map.get(ch)){
                  return false;
            }
            stack.pop();
          }else{
            stack.push(ch);
          }
      }
      return stack.isEmpty();
    }
}
posted @ 2023-04-02 16:43  meta-treasure  阅读(29)  评论(0编辑  收藏  举报