括号匹配问题

问题描述

有效字符串需满足:

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

    // 括号匹配问题
    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();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容