class Solution {
  public:
    /**
     * @param str string字符串
     * @return long长整型
     */
    long long legalExp(string str) {
        stack<long long> st;
        long long a = 0, b = 0;
        for (int i = 0; i < str.size(); i++) {
            if (str[i] <= '9' && str[i] >= '0') {
                a = a * 10 + (str[i] - '0');
                //  这里要把#之前的数字作为一个整体
            } else if (str[i] == '#') {
                st.push(a);
                a = 0;
                // 遇到#之后就将现有的数据进栈,注意要将a归零,否则就会重复计算!!
            } else {
                long long c = st.top();
                st.pop();
                long long d = st.top();
                st.pop();
                if (str[i] == '+') {
                    st.push(d+c);
                } else if (str[i] == '-') {
                    st.push(d-c);
                } else if (str[i] == '*') {
                    st.push(d*c);
                }
            }

        }
        return st.top();
    }
};

刚开始的时候,我设置了两个变量a,b,然后后面进行运算的时候试图将覆盖,但是容易忘记一次计算完成之后

将a和b分别归零,会出错