思路:
数据结构:栈
求字符串长度,然后根据长度遍历整个字符串charAt(i),
(1)遇到左括号就入栈
(2)否则看栈是否为空,为空加返回false; 不为空,接着判断遇到的如果是右括号并判断右括号对应的左括号是否和出栈的元素相匹配,不匹配就直接返回false。
(3)最后判断栈里是否还有元素,即判断栈是否为空,不为空说明有落单的左括号,为空说明是合法的括号序列。

import java.util.*;


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

            }
        }
        return stack.isEmpty();
    }
}