1.思路:本题目可使用stack类进行解决,先将字符串化为字符数组,然后用for循环遍历往栈中放。
若栈为空,则push当前的字符数据,如果当前字符刚好和栈顶配对成一对括号,就弹出栈顶元素,进行下一次循环。这样的话可以保证就算两个括号中间还有别的元素,也可以进行配对。如果配对失败,就向栈中添加元素。
最后,如果for循环结束,栈中的数据为空,则说明案例全部可以配对,返回true,否则返回false;

2.代码:
import java.util.*;

public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        if(s.length()%2!=0||s.length()==0)
            return false;
        char[] c=s.toCharArray();//字符串化为字符数组
        Stack<Character> st=new Stack<>();
        for(int i=0;i<c.length;i++){
            if(st.empty()) st.push(c[i]);
            //判断是否可以配对为一对括号
            else if(st.peek()=='{'&&c[i]=='}'||st.peek()=='('&&c[i]==')'||st.peek()=='['&&c[i]==']') st.pop();
            else st.push(c[i]);
        }
        if(st.empty()) return true;
        return false;
    }
}