Skip to content

Commit 0855d60

Browse files
committed
Create 150. 逆波兰表达式求值.js
1 parent 543cd25 commit 0855d60

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

150. 逆波兰表达式求值.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {string[]} tokens
3+
* @return {number}
4+
*/
5+
var evalRPN = function(tokens) {
6+
function isOperator(char) {
7+
return ['+', '-', '*', '/'].includes(char);
8+
}
9+
function getResult(n1, n2, opr) {
10+
switch (opr) {
11+
case '+': {
12+
return n2 + n1;
13+
break;
14+
}
15+
case '-': {
16+
return n2 - n1;
17+
break;
18+
}
19+
case '*': {
20+
return n2 * n1;
21+
break;
22+
}
23+
case '/': {
24+
return (n2 / n1) > 0 ? Math.floor(n2 / n1) : Math.ceil(n2 / n1);
25+
break;
26+
}
27+
}
28+
}
29+
30+
const stack = [];
31+
for (let i = 0; i < tokens.length ; i++) {
32+
if (isOperator(tokens[i])) {
33+
stack.push(getResult(stack.pop(), stack.pop(), tokens[i]))
34+
} else {
35+
stack.push(parseInt(tokens[i]));
36+
}
37+
}
38+
return stack[0];
39+
};

0 commit comments

Comments
 (0)