给你一个字符串表达式 s
,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1:
输入:s = "3+2*2" 输出:7
示例 2:
输入:s = " 3/2 " 输出:1
示例 3:
输入:s = " 3+5 / 2 " 输出:5
1 class Solution { 2 public: 3 int calculate(string s) { 4 string fs = "+" + s +"+" ; 5 int num = 0; 6 char sign = '+'; 7 stack<int> stk; 8 for(int i =0;i < fs.size();i++) { 9 char ch = fs[i]; 10 if (ch==' ') continue; 11 12 if (isdigit(ch)) { 13 num = num*10 + (ch-'0'); 14 } 15 if (!isdigit(ch)){ 16 if (sign=='+') { 17 stk.push(num); 18 } else if (sign == '-') { 19 stk.push(-num); 20 } else if (sign == '*') { 21 int top = stk.top();stk.pop(); 22 stk.push(num*top); 23 } else if (sign == '/') { 24 int top = stk.top();stk.pop(); 25 stk.push(top/num); 26 } 27 sign = ch; 28 num = 0; 29 } 30 } 31 int res = 0; 32 while(!stk.empty()) { 33 res +=stk.top(); 34 stk.pop(); 35 } 36 return res; 37 } 38 };
提示:
1 <= s.length <= 3 * 105
s
由整数和算符 ('+', '-', '*', '/')
组成,中间由一些空格隔开s
表示一个 有效表达式[0, 231 - 1]
内