class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 返回表达式的值
     * @param s string字符串 待计算的表达式
     * @return int整型
     */
string zhuanhua(string s){
    int changdu{0};stack<char>yunsuanfu;string shuchu;
    changdu=s.size();
    for(int i=0;i<changdu;++i){
        if(s[i]=='+'||s[i]=='-'){
            shuchu+='#';
            while(!(yunsuanfu.empty())&&yunsuanfu.top()!='('){
                shuchu+=yunsuanfu.top();shuchu+='#';yunsuanfu.pop();
            }
            yunsuanfu.push(s[i]);
        }else if (s[i]=='*'){
            shuchu+='#';
            while(!(yunsuanfu.empty())&&yunsuanfu.top()=='*'){
                shuchu+=yunsuanfu.top();shuchu+='#';yunsuanfu.pop();
            }
            yunsuanfu.push(s[i]);
        }else if (s[i]=='('){
            yunsuanfu.push(s[i]);
        }else if(s[i]==')'){
            while (!(yunsuanfu.empty())){
                if(yunsuanfu.top()=='('){
                    yunsuanfu.pop();break;
                }else{
                    shuchu+='#';shuchu+=yunsuanfu.top();yunsuanfu.pop();
                }
            }
        }else{
            shuchu+=s[i];
        }
    }
    shuchu+='#';
    while (!(yunsuanfu.empty())){
        shuchu+=yunsuanfu.top();shuchu+='#';yunsuanfu.pop();
    }
    return shuchu;
}
int solve(string s) {
        stack<int>sss;stringstream ss;string S;int beijianshu,jianshu;
        s=zhuanhua(s);
        ss<<s;
        while (getline(ss,S,'#')){
            if(S=="+"){
                jianshu=sss.top();sss.pop();beijianshu=sss.top();sss.pop();sss.push(beijianshu+jianshu);
            }else if(S=="-"){
                jianshu=sss.top();sss.pop();beijianshu=sss.top();sss.pop();sss.push(beijianshu-jianshu);
            }else if(S=="*"){
                jianshu=sss.top();sss.pop();beijianshu=sss.top();sss.pop();sss.push(beijianshu*jianshu);
            }else{
                sss.push(stoi(S));
            }
        }
        return sss.top();
    }
};