有效的括号

2022-02-03  本文已影响0人  Airjoden

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

有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。

解题步骤

package math;

import java.util.*;

public class Solution {
    public boolean isValid(String s){
        int n = s.length();
        if (n % 2 == 1){
            return false;
        }//字符串为单数返回false
        Map<Character, Character> pairs = new HashMap<Character, Character>(){{
            put(')','(');
            put(']','[');
            put('}','{');
        }}; //创建哈希表左右括号对应
        Deque<Character> stack = new LinkedList<Character>();  //创建栈
        for (int i = 0; i < n; i++){
            char ch = s.charAt(i);  //s字符串随下标输出对应字符
            if (pairs.containsKey(ch)){  //根据哈希表判断ch是否为右括号  containsKey(ch)表示哈希表里key为ch是否存在
                if (stack.isEmpty() || stack.peek()!=pairs.get(ch)){  //栈为空 或 栈顶不为左括号pairs.get(ch)取key为ch的值
                    return false;
                }
                stack.pop();  //将栈顶弹出
            } else {
                stack.push(ch);  //将ch字符入栈
            }
        }
        return stack.isEmpty();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读