Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +
, -
, *
, /
operators and empty spaces . The integer division should truncate toward zero.
You may assume that the given expression is always valid.
Some examples:
"3+2*2" = 7 " 3/2 " = 1 " 3+5 / 2 " = 5
Note: Do not use the eval
built-in library function.
class Solution {
public:
int calculate(string s) {
int sign=1;
int i=0;
int num=getdigit(s,i);
int res=0;
while(i<s.size())
{
if(s[i]=='+')
{
res+=num*sign;
sign=1;
num=getdigit(s,++i);
}
else if(s[i]=='-')
{
res+=num*sign;
sign=-1;
num=getdigit(s,++i);
}
else if(s[i]=='*')
{
num*=getdigit(s,++i);
}
else
num/=getdigit(s,++i);
}
res+=num*sign;
return res;
}
private:
int getdigit(const string& s,int& i)
{
int res=0;
while(i<s.size())
{
if(s[i]>='0'&&s[i]<='9')
res=res*10+s[i]-'0';
else if(s[i]!=' ')
return res;
i++;
}
return res;
}
};