-
Notifications
You must be signed in to change notification settings - Fork 279
/
150 Evaluate Reverse Polish Notation.js
45 lines (37 loc) · 1.25 KB
/
150 Evaluate Reverse Polish Notation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Evaluate the value of an arithmetic expression in Reverse Polish Notation.
// Valid operators are +, -, *, /. Each operand may be an integer or another expression.
// Some examples:
// ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
// ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
// Hide Company Tags LinkedIn
// Hide Tags Stack
// Hide Similar Problems (H) Basic Calculator (H) Expression Add Operators
/**
* @param {string[]} tokens
* @return {number}
*/
var evalRPN = function(tokens) {
var stack = [];
for(var i = 0; i < tokens.length; i++) {
var token = tokens[i];
var val1,val2;
var val = parseInt(token);
if(!isNaN(val)) {
stack.push(val);
} else {
val2 = stack.pop();
val1 = stack.pop();
if(token === '*') {
stack.push(parseInt(val1 * val2));
} else if(token === '/') {
stack.push(parseInt(val1 / val2));
} else if(token === '-') {
stack.push(val1 - val2);
} else if(token === '+') {
stack.push(val1 + val2);
}
}
}
return stack.pop();
};
console.log(evalRPN([ 12, 12, 12, '*', '+', 3, 4, '-', '+' ] ));