括号匹配(算法)

思路:使用栈后进先出的特殊结构,对括号进行匹配,每次执行stack.push()后当前循环结束开始下一次循环

public boolean KuoHao(String str){

    Stack<Character> stack = new Stack<>();

    for(char s : str.toCharArray()){
        if(s=='(')
            stack.push(')');
        else if(s=='[')
            stack.push(']');
        else if(s=='{')
            stack.push('}');
        else if(stack.isEmpty() || stack.pop()!=s)
            return false;
    }
    return stack.isEmpty();
}

代码分析

(1)s='('    将 ‘)' 入栈  进行下一次循环

 

(2)s='['   将 ’]'入栈  进行下一次循环

 

 (3)s='{'  将 '}' 入栈  进行下一次循环

 

 (4)s='}'     stack.pop()='}'   将 } 弹出栈  进行下一次循环

 

 (5)s=']'     stack.pop()=']'   将 ] 弹出栈  进行下一次循环

 

 (6)栈中还有值,说明没有匹配完   stack.isEmpty() = false

 

 

posted @ 2022-01-19 10:51  Q子  阅读(75)  评论(0)    收藏  举报