Basic Calculator II

来源:互联网 发布:iphone预约软件 编辑:程序博客网 时间:2024/06/02 21:18


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;    }};


0 0
原创粉丝点击