leetcode 227 简单计算器

正常计算器的计算形式。首先需要注意的是将连续的数字转换成数。第二点是栈中只维护数,而若出现减法,则即为-n,若出现乘除,则只对栈顶元素进行操作。最后把栈中所有元素相加即可,贴代码

 1 class Solution {
 2 public:
 3     int calculate(string s) {
 4         vector<int> stk;
 5         char preSign = '+';
 6         int num = 0;
 7         int n = s.length();
 8         for (int i = 0; i < n; ++i) 
 9         {
10             if (isdigit(s[i])) 
11             {
12                 num = num * 10 + int(s[i] - '0');
13             }
14             if (!isdigit(s[i]) && s[i] != ' ' || i == n - 1) 
15             {
16                 switch (preSign) 
17                 {
18                     case '+':
19                         stk.push_back(num);
20                         break;
21                     case '-':
22                         stk.push_back(-num);
23                         break;
24                     case '*':
25                         stk.back() *= num;
26                         break;
27                     default:
28                         stk.back() /= num;
29                 }
30                 preSign = s[i];
31                 num = 0;
32             }
33         }
34         return accumulate(stk.begin(), stk.end(), 0);
35     }
36 };

 

上一篇:SpringBoot+Vue前后端分离项目中实现删除用户功能


下一篇:java 方法作为参数封装在map