File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ // 就是一个栈 的问题,注意输入时候是string ,涉及到switch中括号里面的c_str的转换问题,注意两个操作数计算的顺序
2
+
3
+ class Solution {
4
+ private:
5
+ void operate (stack<int> &value,const char* opt)
6
+ {
7
+ if(value.size() > 1)
8
+ {
9
+ int num1 = value.top();
10
+ value.pop();
11
+ int num2 = value.top();
12
+ value.pop();
13
+ switch(*opt)
14
+ {
15
+ case '+':
16
+ value.push(num1 + num2);
17
+ break;
18
+ case '-':
19
+ value.push(num2 - num1); // pay attention to the order
20
+ break;
21
+ case '/':
22
+
23
+ value.push(num2 / num1);
24
+ break;
25
+ case '*':
26
+ value.push(num1 * num2);
27
+ break;
28
+ break;
29
+ }
30
+ }
31
+ }
32
+
33
+
34
+ public:
35
+ int evalRPN(vector<string> &tokens) {
36
+ stack<int> value;
37
+ for(int i = 0;i < tokens.size();i++)
38
+ {
39
+ if(tokens[i] == "+" || tokens[i] == "-"||
40
+ tokens[i] == "*" || tokens[i] == "/")
41
+ operate(value,tokens[i].c_str());
42
+ else
43
+ value.push(atoi(tokens[i].c_str()));
44
+ }
45
+ return value.top();
46
+
47
+ }
48
+ };
You can’t perform that action at this time.
0 commit comments