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