import java.util.*;
public class Solution {
    public boolean isValid (String s) {
        if(s.length()==1){
            return false;
        }
        if(s.length()==0){
            return true;
        }
        Stack<Character> stack = new Stack<Character>();
        for(int i=0;i<s.length();++i){
            switch(s.charAt(i)){
                case ')': 
                    if(stack.isEmpty()|| stack.pop()!='('){return false;}
                    break;
                case ']': 
                    if(stack.isEmpty()|| stack.pop()!='['){return false;}
                    break;
                case '}': 
                    if(stack.isEmpty()|| stack.pop()!='{'){return false;}
                    break;
                case '(':
                case '[':
                case '{':
                    stack.push(s.charAt(i));
                    break;
            }
        }
        if(stack.isEmpty()){
            return true;
        }else{
            return false;
        } 
    }
}

方法:栈

利用栈的特性先进后出,遍历字符串,当遇到左括号则进栈,右括号则出栈判断是否为对应的左括号。注意防止左右括号数量不对等的情况,如都是左括号的情况,所以最后应该判断栈是否为空。