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