基本计算器 II
题目:
思考:
- 需要对数字和符号分开处理
- 需要对多位数字字符合并成一个整数
- 涉及计算,采用栈存储
- 对于符号,向后看齐
实现:
class Solution {
public:int calculate(string s) {int ret=0;int t=0;stack<int> stk_num;char op='+';for (int i=0;i<s.size();i++){if (isdigit(s[i])){t=t*10+(s[i]-'0');}if (!isdigit(s[i])&&s[i]!=' '||i==s.size()-1){int num;switch(op){case '+':stk_num.push(t);break;case '-':stk_num.push(-t);break;case '*':num =stk_num.top();stk_num.pop();num*=t;stk_num.push(num);break;case '/':num=stk_num.top();stk_num.pop();num/=t;stk_num.push(num);break;}op=s[i];t=0;}}while(!stk_num.empty()){ret+=stk_num.top();stk_num.pop();}return ret;}
};