class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回表达式的值
* @param s string字符串 待计算的表达式
* @return int整型
*/
vector<int> function(string s,int in)
{
stack<int> st;
int num=0;
char op='+';
int i;
for(i=in;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9')
{
num=num*10+s[i]-'0';
if(i!=s.size()-1)continue;
}
if(s[i]=='(')
{
vector<int> New=function(s,i+1);
num=New[0];
i=New[1];
if(i!=s.size()-1)continue;
}
switch(op)
{
case '+':
{
st.push(num);
break;
}
case '-':
{
st.push(-num);
break;
}
case '*':
{
int x=st.top();
st.pop();
st.push(x*num);
break;
}
}
num=0;
if(s[i]==')')break;
else op=s[i];
}
int sum=0;
while(!st.empty())
{
sum+=st.top();
st.pop();
}
return vector<int> {sum,i};
}
int solve(string s) {
return function(s,0)[0];
}
};