括号校验-Java

//目标:括号匹配的校验
//思路:使用栈来解决、遇到`([`就`入栈`,遇到`)]`就出栈,遇到其他元素不做处理。处理完后,检查栈的长度,为空表明括号匹配。
    private static boolean checkBra(String str) {
        String[] arr = str.split("");
        if (")".equals(arr[0]) || "]".equals(arr[0])) {
            return false;//字符串长度较长时可加此判断,提高效率
        }
        Stack stack = new Stack();
        for (int i = 0; i < arr.length; i++) {
            switch (arr[i]) {
                case "(":
                    stack.push(arr[i]);
                    break;
                case "[":
                    stack.push(arr[i]);
                    break;
                case ")":
                    if(stack.isEmpty()) stack.push(arr[i]);//多余的括号
                    Object a = "(".equals(stack.peek()) == true ? stack.pop() : stack.push(arr[i]);//不匹配的括号
                    break;
                case "]":
                    if(stack.isEmpty()) stack.push(arr[i]);//多余的括号
                    Object b = "[".equals(stack.peek()) == true ? stack.pop() : stack.push(arr[i]);//不匹配的括号
                    break;
                default:
                    break;
            }
        }
        return stack.isEmpty() == true ? true : false;//栈为空则校验成功,不为空则括号不匹配
    }
posted @ 2021-09-14 15:02  白玉神驹  阅读(178)  评论(0编辑  收藏  举报