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分别归零,会出错

京公网安备 11010502036488号