我的方法是用两个栈分别
1、 记录上一次左括号出现位置、索引坐标
2、对于非括号字符统计长度(方便反转),str 记录所有非括号字符
3、遍历右括号,判断是否有左括号,无返回 “”
4、存在左括号,对相应长度的字符进行反转

你可以照着我代码看一下,应该还是比较好理解的
// 用栈来判断括号是否匹配,str 记录非括号字符,每一对括号中的数翻转一次
    static String resolve(String expr) {
        Stack<Character> stack = new Stack<>();
        Stack<Integer> reverse=new Stack<>();
        String str = "";
        int count=0; // 记录翻转长度
        for (int i = 0; i < expr.length(); i++) {
            // 记录上一左括号出现时,str 长度,记录需要翻转的长度
            char c = expr.charAt(i);
            if (c == '(') {
                stack.add(c);
                reverse.add(str.length());
            } else if (c == ')') {
                if (stack.size() < 1) {
                    return "";
                }
                int last = reverse.pop();
                StringBuilder temp = new StringBuilder(str.substring(last, str.length()));
                str = str.substring(0, last) + temp.reverse();
                stack.pop();
                count = 0; // 归零
            } else {
                str+=""+c;
                count++;
            }
        }
        return stack.size() == 0 ? str : "";
    }