Basic Calculator

来源:互联网 发布:汽车图解软件有没有 编辑:程序博客网 时间:2024/04/28 21:02

Implement a basic calculator to evaluate a simple expression string.

The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces.

You may assume that the given expression is always valid.

Some examples:

"1 + 1" = 2" 2-1 + 2 " = 3"(1+(4+5+2)-3)+(6+8)" = 23

Note: Do not use the eval built-in library function.


 {public:int calculate(string s) {stack<int>num;stack<char>opera;int res = 0;for (auto i = s.begin(); i != s.end(); i++){int tmp = 0;if (*i == ' ')continue;if (*i >= '0' && *i <= '9'){for (int tmp2 = 0; *i >= '0' && *i <= '9';){tmp2 *= 10;tmp2 += *i - '0';if (i + 1 == s.end() || *(i + 1) <'0' || *(i + 1) > '9'){num.push(tmp2);break;}else++i;}continue;}if (*i != ')')opera.push(*i);else{while (opera.top() != '('){opera.top() == '+' ? tmp += num.top() : tmp -= num.top();opera.pop();num.pop();}tmp += num.top();num.pop();num.push(tmp);opera.pop();}}while (!num.empty()){if (!opera.empty()){opera.top() == '+' ? res += num.top() : res -= num.top();opera.pop();}else{res += num.top();}num.pop();}return res;}};


0 0
原创粉丝点击