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();
}
};