class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
long long legalExp(string str) {
stack<long long>st;
for (int i = 0; i < str.size();) {
if (str[i] == '#') i++;
else if (str[i] == '+') {
long long num1 = st.top();
st.pop();
long long num2 = st.top();
st.pop();
st.push(num1 + num2);
i++;
}
else if (str[i] == '*') {
long long num1 = st.top();
st.pop();
long long num2 = st.top();
st.pop();
st.push(num1 * num2);
i++;
}
else if (str[i] == '-') {
long long num1 = st.top();
st.pop();
long long num2 = st.top();
st.pop();
st.push(num2 - num1);
i++;
}
else {
int l = i;
long long num = 0;
while (str[l]!='#') {
num = num * 10 + str[l] - '0';
l++;
}
i += l-i+1;
st.push(num);
}
}
return st.top();
}
};