判断括号是否合法

复制代码
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

public class 判断括号是否合法 {

    public static boolean isValid(String s){
        Stack<Character> stack = new Stack<>();
        Map<Character,Character> characterCharacterMap = new HashMap<>();
        //使括号互相对应,至于为什么右括号早前面,因为在下面如果右与右括号相对应的左括号,得到更方便,使它等于栈弹出的元素相等就可以了
        characterCharacterMap.put(')','(');
        characterCharacterMap.put(']','[');
        characterCharacterMap.put('}','{');
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            //判断是否使左括号
            if (!characterCharacterMap.containsKey(chars[i])){
                stack.push(chars[i]);
            }else{
                //判断栈是否为空或者栈顶元素等于与之相对应的括号
                if (stack.empty() || characterCharacterMap.get(chars[i]) != stack.pop()){
                    return false;
                }
            }
        }
        //为真说明括号没了,返回真,为假说明还有未配对的括号
        return stack.empty();
    }
}
复制代码

 

posted @   七色angel  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示