File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-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
+ 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
+ } ;
You can’t perform that action at this time.
0 commit comments