File tree 1 file changed +44
-0
lines changed
evaluate-reverse-polish-notation
1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments