File tree Expand file tree Collapse file tree 1 file changed +51
-45
lines changed Expand file tree Collapse file tree 1 file changed +51
-45
lines changed Original file line number Diff line number Diff line change 1
- module . exports = function ( s ) {
2
- s = s . trim ( ) ;
3
- const stack = new Array ( ) ;
4
- let preSign = '+' ;
5
- let numStr = '' ;
6
- const n = s . length ;
7
- for ( let i = 0 ; i < n ; ++ i ) {
8
- if ( s [ i ] === '.' || ( ! isNaN ( Number ( s [ i ] ) ) && s [ i ] !== ' ' ) ) {
9
- numStr += s [ i ] ;
10
- } else if ( s [ i ] === '(' ) {
11
- let isClose = 1 ;
12
- let j = i ;
13
- while ( isClose > 0 ) {
14
- j += 1 ;
15
- if ( s [ j ] === '(' ) isClose += 1 ;
16
- if ( s [ j ] === ')' ) isClose -= 1 ;
1
+ /* eslint-disable */
2
+ // 四则运算
3
+
4
+ ! ( function ( ) {
5
+ var calculate = function ( s ) {
6
+ s = s . trim ( ) ;
7
+ const stack = new Array ( ) ;
8
+ let preSign = '+' ;
9
+ let numStr = '' ;
10
+ const n = s . length ;
11
+ for ( let i = 0 ; i < n ; ++ i ) {
12
+ if ( s [ i ] === '.' || ( ! isNaN ( Number ( s [ i ] ) ) && s [ i ] !== ' ' ) ) {
13
+ numStr += s [ i ] ;
14
+ } else if ( s [ i ] === '(' ) {
15
+ let isClose = 1 ;
16
+ let j = i ;
17
+ while ( isClose > 0 ) {
18
+ j += 1 ;
19
+ if ( s [ j ] === '(' ) isClose += 1 ;
20
+ if ( s [ j ] === ')' ) isClose -= 1 ;
21
+ }
22
+ numStr = `${ calculate ( s . slice ( i + 1 , j ) ) } ` ;
23
+ i = j ;
17
24
}
18
- numStr = ` ${ calculate ( s . slice ( i + 1 , j ) ) } ` ;
19
- i = j ;
20
- }
21
- if ( isNaN ( Number ( s [ i ] ) && s [ i ] !== '.' ) || i === n - 1 ) {
22
- let num = parseFloat ( numStr ) ;
23
- switch ( preSign ) {
24
- case '+ ' :
25
- stack . push ( num ) ;
26
- break ;
27
- case '- ' :
28
- stack . push ( - num ) ;
29
- break ;
30
- case '* ' :
31
- stack . push ( stack . pop ( ) * num ) ;
32
- break ;
33
- case '/' :
34
- stack . push ( stack . pop ( ) / num ) ;
35
- break ;
36
- default :
37
- break ;
25
+ if ( ( isNaN ( Number ( s [ i ] ) ) && s [ i ] !== '.' ) || i === n - 1 ) {
26
+ let num = parseFloat ( numStr ) ;
27
+ switch ( preSign ) {
28
+ case '+' :
29
+ stack . push ( num ) ;
30
+ break ;
31
+ case '- ' :
32
+ stack . push ( - num ) ;
33
+ break ;
34
+ case '* ' :
35
+ stack . push ( stack . pop ( ) * num ) ;
36
+ break ;
37
+ case '/ ' :
38
+ stack . push ( stack . pop ( ) / num ) ;
39
+ break ;
40
+ default :
41
+ break ;
42
+ }
43
+ preSign = s [ i ] ;
44
+ numStr = '' ;
38
45
}
39
- preSign = s [ i ] ;
40
- numStr = '' ;
41
46
}
42
- }
43
- let ans = 0 ;
44
- while ( stack . length ) {
45
- ans += stack . pop ( ) ;
46
- }
47
- return ans ;
48
- } ;
47
+ let ans = 0 ;
48
+ while ( stack . length ) {
49
+ ans += stack . pop ( ) ;
50
+ }
51
+ return ans ;
52
+ } ;
53
+ module . exports = calculate ;
54
+ } ) ( ) ;
You can’t perform that action at this time.
0 commit comments