解题思路:采用栈解决。当括号为左括号时(,{,[,将字符存入栈;当括号为右括号时,),},],若栈顶元素与之匹配则pop出栈顶,不然返回false。遍历完字符串,栈为空返回true,不然返回false。注意,遍历过程中栈为空的情况。

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        boolean flag=true;
        Stack<Character> stack=new Stack<>();
        if(s.length()!=0){
            /*if(s.charAt(0)==')'||s.charAt(0)=='}'||s.charAt(0)==']'){
                    return false;
            }*/
            for(int i=0;i<s.length();i++){
                switch(s.charAt(i)){
                    case '(':
                        stack.push('(');
                        break;
                    case '{':
                        stack.push('{');
                        break;
                    case '[':
                        stack.push('[');
                        break;    
                    case ')':
                        if(!stack.empty()&&stack.peek()=='('){
                            stack.pop();
                            break;
                        }
                        else{
                            return false;
                        }
                     case '}':
                        if(!stack.empty()&&stack.peek()=='{'){
                            stack.pop();
                            break;
                        }
                        else{
                            return false;
                        }
                     case ']':
                        if(!stack.empty()&&stack.peek()=='['){
                            stack.pop();
                            break;
                        }
                        else{
                            return false;
                        }
                    default:
                        break;
                }
            }
        }
        return stack.empty();
    }
}