题目:
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.
Credits:
Special thanks to for adding this problem and creating all test cases. 代码:class Solution {public: int calculate(string s) { stack st; int result = 0; int i = 0; while(i方法比较繁琐。。。就这样了。='0'&&s.at(i)<='9') { while(i ='0'&&s.at(i)<='9') { sum = sum * 10 + s.at(i)-'0'; i++; } st.push(sum); } else if(i ='0'&&s.at(i)<='9') { while(i ='0'&&s.at(i)<='9') { sum1 = sum1 * 10 + s.at(i)-'0'; i++; } a*=sum1; st.push(a); } } else if(i ='0'&&s.at(i)<='9') { sum1 = sum1 * 10 + s.at(i)-'0'; i++; } a = (int)(a/sum1); st.push(a); } else { i++; } } stack st1; while(!st.empty()) { st1.push(st.top()); st.pop(); } while(!st1.empty()) { int a = st1.top(); st1.pop(); if(st1.empty()) return a; else { if((char)(st1.top())=='+') { st1.pop(); int temp = st1.top()+a; st1.pop(); st1.push(temp); } else if((char)(st1.top())=='-') { st1.pop(); int temp = a-st1.top(); st1.pop(); st1.push(temp); } } } return st1.top(); }};