括号匹配问题――Stack

括号匹配问题:判断括号状态是否合法,'('一定有一个')'和它对应起来,'('入栈,通过出栈出来的值是否与')'匹配确定是否合法。如果stack到最后不为空,则一定有至少一个'('没法匹配成功。

题目为判断'[]'、'{}'、'()'的合法状态

public static boolean braket(String str){
    Stack<Character> s = new Stack<Character>();
    for(int i = 0 ; i< str.length(); i++){
        char c = str.charAt(i);
        switch(c){
        case '{':
        case '[':
        case '(':
            s.push(c);
            break;
        case '}':
            if(!s.isEmpty() && s.pop()=='{')
                break;
            else return false;
        case ']':
            if(!s.isEmpty() && s.pop()=='[')
                break;
            else return false;
        case ')':
            if(!s.isEmpty() && s.pop()=='(')                   
                break;
            else return false;
        }
    }
    if(s.isEmpty()){
        return true;
    }
    else{
        return false;
    }
}


你可能感兴趣的:(java,stack,括号匹配)