Skip to content

Commit e1c9129

Browse files
committed
两遍AC
1 parent 91322b9 commit e1c9129

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

Evaluate Reverse Polish Notation

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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+
};

0 commit comments

Comments
 (0)