class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回表达式的值
* @param s string字符串 待计算的表达式
* @return int整型
*/
int solve(string s) {
// write code here
int num=0,flag=1,ff=0;
string ss="";
stack<int> snum;
for(int i=0;i<s.length();i++){
if(s[i]=='('){
if(ff>0)ss+=s[i];
ff+=1;
}
else if(s[i]==')'){
if(ff>1)ss+=s[i];
ff-=1;
if(ff==0){
num=solve(ss);
ss="";
}}
else if(ff!=0){
ss+=s[i];
}
else if(isdigit(s[i])){
num=num*10+(s[i]-'0');
}
else if(s[i]=='+'){
snum.push(flag*num);
flag=1;
num=0;
}
else if(s[i]=='-'){
snum.push(flag*num);
flag=-1;
num=0;
}
else if(s[i]=='*'){
flag=flag*num;
num=0;
}
}
snum.push(flag*num);
int out=0;
while(!snum.empty()){
out+=snum.top();
snum.pop();
}
return out;
}
};

京公网安备 11010502036488号