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