Skip to content

Commit 279b9e1

Browse files
committed
feat: solve new question
1 parent 3e8abfe commit 279b9e1

File tree

1 file changed

+44
-0
lines changed
  • evaluate-reverse-polish-notation

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* @param {string[]} tokens
3+
* @return {number}
4+
*/
5+
var evalRPN = function(tokens) {
6+
let numbers = [];
7+
8+
let operator_list = ['+', '-', '*', '/'];
9+
let calc = 0;
10+
11+
for (let i=0; i < tokens.length; i++) {
12+
if (operator_list.includes(tokens[i])) {
13+
switch (tokens[i]) {
14+
case '+':
15+
calc = parseInt(numbers[numbers.length - 2]) + parseInt(numbers[numbers.length - 1]);
16+
numbers.pop();
17+
numbers.pop();
18+
numbers.push(calc);
19+
continue;
20+
case '*':
21+
calc = parseInt(numbers[numbers.length - 2]) * parseInt(numbers[numbers.length - 1]);
22+
numbers.pop();
23+
numbers.pop();
24+
numbers.push(calc);
25+
continue;
26+
case '-':
27+
calc = parseInt(numbers[numbers.length - 2]) - parseInt(numbers[numbers.length - 1]);
28+
numbers.pop();
29+
numbers.pop();
30+
numbers.push(calc);
31+
continue;
32+
case '/':
33+
calc = Math.trunc(parseInt(numbers[numbers.length - 2]) / parseInt(numbers[numbers.length - 1]));
34+
numbers.pop();
35+
numbers.pop();
36+
numbers.push(calc);
37+
continue;
38+
}
39+
} else {
40+
numbers.push(tokens[i]);
41+
}
42+
}
43+
return parseInt(numbers[0]);
44+
};

0 commit comments

Comments
 (0)