难度:中等
题目描述:
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
class Solution {
public:
int calculate(string s) {
int n=s.length();
int i=0;
long long num;
long long ans=0;
int sign=1;
stack<int>cal;
while(i<n){
if(s[i]==' '){
i++;
}else if(s[i]=='+'){
sign=1;
i++;
}else if(s[i]=='-'){
sign=-1;
i++;
}else if(s[i]=='*'){
i++;
while(s[i]==' '){
i++;
}
long long num1=0;
while(i<n&&s[i]>='0'&&s[i]<='9'){
num1=num1*10+s[i]-'0';
i++;
}
cal.top()=cal.top()*num1;
}else if(s[i]=='/'){
i++;
while(s[i]==' '){
i++;
}
long long num1=0;
while(i<n&&s[i]>='0'&&s[i]<='9'){
num1=num1*10+s[i]-'0';
i++;
}
cal.top()=cal.top()/num1;
}else{
num=0;
while(i<n&&s[i]>='0'&&s[i]<='9'){
num=num*10+s[i]-'0';
i++;
}
cal.push(num*sign);
}
}
while(!cal.empty()){
ans+=cal.top();
cal.pop();
}
return ans;
}
};