题目链接:有效的括号

分析:

这里需要使用栈来进行操作

括号共分为三种:( )、{ }、[ ]

若要进行括号匹配,只需要把左括号全部压入栈中,再用右括号进行匹配( 遇到左括号压入栈,遇到右括号去进行判断匹配 )

栈中的元素不停的弹出,然后和右边的括号进行匹配

例如:栈中的元素是这样:( { [  此时的栈顶元素应该是 [,后面的括号用来和弹出的栈顶元素 [ 进行匹配

若匹配成功,则再次弹出元素,若匹配不成功,直接返回false

等到最后(此时还未弹出false,表示之前的括号都匹配成功),如果循环结束,栈中没有元素则表示全部匹配成功

代码实现:

public class ValidParentheses {
    public static boolean isValid(String s) {
        //1、申明一个stack
        Stack<Character> stack = new Stack<Character>();
        //遍历 s String本质上是char[]
        for(int i = 0 ; i < s.length(); i++){
            char c = s.charAt(i);
            if(c == '{' || c == '[' || c == '('){
                //如果是{ [ (   压入栈中
                stack.push(c);
            }else{
                //  }  ]  )   进行比对
                // 判断此时栈是否为空
                if(stack.isEmpty()){
                    return false;
                }
                char topChar = stack.pop();
                if(c == ']' && topChar != '['){
                    return false;
                }
                if(c == '}' && topChar != '{'){
                    return false;
                }
                if(c == ')' && topChar != '('){
                    return false;
                }
            }
        }
        //如果循环结束,栈中没有元素则表示全部匹配成功
        return stack.isEmpty();
    }

    public static void main(String[] args) {
        System.out.println(isValid("(){}"));
    }
}