代码简单,代码短

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 返回表达式的值
     * @param s string字符串 待计算的表达式
     * @return int整型
     */
    public int solve (String s) {
        // write code here
        i = 0;
        return helper(s);
    }
    int i = 0;

    private int helper(String s) {
        
        int num = 0, res = 0;
        char sign = '+';
        Stack<Integer> st = new Stack<>();
        for (; i < s.length(); i ++ ) {
            char cur = s.charAt(i);
            if (Character.isDigit(cur)) {
                num = num * 10 + cur - '0';
            }
            if (cur == '(') {
                i ++ ;
                num = helper(s);
            }
            if (cur != ' ' && !Character.isDigit(cur) || i == s.length() - 1) {
                switch(sign) {
                    case '+': st.push(num); break;
                    case '-': st.push(-num); break;
                    case '*': st.push(st.pop() * num); break;
                    case '/': st.push(st.pop() / num); break;
                }
                num = 0;
                sign = cur;
            }
            if (cur == ')') break;
        }
        while (!st.isEmpty()) res += st.pop();
        return res;
    }
}