括号匹配问题

2021-03-19  本文已影响0人  simon_kin

问题描述

有效字符串需满足:

左括号必须用相同类型的右括号闭合。包括:“( )”,“[ ]”,“{ }”。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

    // 括号匹配问题
    public static boolean isMatch(String str){

        Stack<Character> stack = new Stack();

        for (int i = 0, len =str.length(); i<len;i++){
            char ch = str.charAt(i);
            if (ch == '{' || ch == '['  || ch == '(' ){
                stack.push(ch);
            }

            if (ch == '}' || ch == ']'  || ch == ')' ){
                if (stack.isEmpty()){
                    return false;
                }
                // 如果栈顶元素和下一个右括号相匹配,则将其栈顶元素出栈
                if ((stack.peek() == '(' && ch == ')') 
                        || (stack.peek() == '[' && ch == ']') 
                        || (stack.peek() == '{' && ch == '}') ) {   
                    stack.pop();
                }
            }
        }
        return stack.isEmpty();
    }
上一篇 下一篇

猜你喜欢

热点阅读