#include <cctype>
#include<bits/stdc++.h>
class Solution {
public:
int solve(string s) {
stack<int> num;
stack<char> op;
for(int i=0;i<s.length();i++){
if(isdigit(s[i])){
int number=0;
while(isdigit(s[i])&&i<s.length()){
number=number*10+(s[i]-'0');
i++;
}if(!op.empty()&&op.top()=='*'){
number=number*num.top();
num.pop();op.pop();
num.push(number);
i--;
}else{
num.push(number);
i--;
}
}else if(s[i]=='*'){
op.push(s[i]);
}else if(s[i]=='('){
op.push(s[i]);
}else if(s[i]==')'){
while(op.top()!='('){
if(!op.empty()&&op.top()=='+'){
int number=0;
int top1=num.top();
num.pop();
number=top1+num.top();
num.pop();op.pop();
num.push(number);
}else if(!op.empty()&&op.top()=='-'){
int number=0;
int top1=num.top();
num.pop();
number=num.top()-top1;
num.pop();op.pop();
num.push(number);
}else if(!op.empty()&&op.top()=='*'){
int number=0;
int top1=num.top();
num.pop();
number=top1*num.top();
num.pop();op.pop();
num.push(number);
}
}op.pop();
}else if(s[i]=='+'||s[i]=='-'){
op.push(s[i]);
}
}
while(!op.empty()){
if(!op.empty()&&op.top()=='+'){
int number=0;
int top1=num.top();
num.pop();
number=top1+num.top();
num.pop();op.pop();
num.push(number);
}else if(!op.empty()&&op.top()=='-'){//处理连减
int cnt=1;vector<int> a;
while(!op.empty()&&op.top()=='-'){
cnt++;
op.pop();
}
for(int i=0;i<cnt;i++){
a.push_back(num.top());
num.pop();
}
int number=a[cnt-1];
for(int i=cnt-2;i>=0;i--){
number-=a[i];
}
num.push(number);
}else if(!op.empty()&&op.top()=='*'){
int number=0;
int top1=num.top();
num.pop();
number=top1*num.top();
num.pop();op.pop();
num.push(number);
}
}
return num.top();
}
};