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