File tree Expand file tree Collapse file tree 1 file changed +15
-19
lines changed Expand file tree Collapse file tree 1 file changed +15
-19
lines changed Original file line number Diff line number Diff line change 3
3
* @return {number }
4
4
*/
5
5
const calculate = function ( s ) {
6
- if ( ! s || ! s . length ) return 0
7
- let n = 0
8
- let op = '+'
9
- const stack = [ ]
10
- for ( let i = 0 ; i < s . length ; i ++ ) {
11
- let c = s . charAt ( i )
12
- let isNumber = '0' <= c && c <= '9'
13
- if ( isNumber ) {
14
- n = n * 10 + + c
15
- }
16
- if ( ( ! isNumber && c !== ' ' ) || i == s . length - 1 ) {
17
- if ( op === '+' ) stack . push ( n )
18
- else if ( op === '-' ) stack . push ( - n )
19
- else if ( op === '*' ) stack . push ( stack . pop ( ) * n )
20
- else if ( op === '/' ) stack . push ( ~ ~ ( stack . pop ( ) / n ) )
21
- op = c
22
- n = 0
6
+ const stack = [ ] , n = s . length
7
+ let op = '+' , num = 0
8
+ for ( let i = 0 ; i < n ; i ++ ) {
9
+ const isNumber = s [ i ] >= '0' && s [ i ] <= '9'
10
+ if ( isNumber ) num = num * 10 + ( + s [ i ] )
11
+ if ( ( ! isNumber && s [ i ] !== ' ' ) || i === n - 1 ) {
12
+ if ( op === '+' ) stack . push ( num )
13
+ else if ( op === '-' ) stack . push ( - num )
14
+ else if ( op === '*' ) stack . push ( stack . pop ( ) * num )
15
+ else if ( op === '/' ) stack . push ( ~ ~ ( stack . pop ( ) / num ) )
16
+ op = s [ i ]
17
+ num = 0
23
18
}
24
19
}
25
- return stack . reduce ( ( a , b ) => a + b , 0 )
26
- }
20
+
21
+ return stack . reduce ( ( ac , e ) => ac + e , 0 )
22
+ } ;
You can’t perform that action at this time.
0 commit comments