2
2
* @param {number } x
3
3
* @return {number }
4
4
*/
5
- const reverse1 = function ( x ) {
6
- let s = String ( x ) ;
7
- let isNegative = false ;
8
- if ( s [ 0 ] === '-' ) {
9
- isNegative = true ;
10
- }
11
- s = parseInt ( s . split ( '' ) . reverse ( ) . join ( '' ) ) ;
12
- return isNegative ? ( s > Math . pow ( 2 , 31 ) ? 0 : - s ) : ( s > Math . pow ( 2 , 31 ) - 1 ? 0 : s ) ;
13
- }
14
5
15
- const reverse = function ( x ) {
16
- let result = parseInt ( x . toString ( ) . split ( '' ) . reverse ( ) . join ( '' ) ) ;
17
- if ( result > Math . pow ( 2 , 31 ) - 1 || - result < Math . pow ( - 2 , 31 ) ) return 0 ;
18
- return x > 0 ? result : - result ;
19
- }
20
- /**
21
- * author:mcn date:2018/10/25
6
+ /**
7
+ * Author: mcnwork2018
22
8
*/
23
9
24
- /**
25
- * First Way:将数字转化为字符串的处理
26
- */
27
10
var reverse = function ( x ) {
28
- const min = - Math . pow ( 2 , 31 ) , max = Math . pow ( 2 , 31 ) - 1 ;
29
- let sign = 1 ;
30
- if ( x < 0 ) {
31
- sign = - sign ;
32
- x = sign * x ;
11
+ let min = - Math . pow ( 2 , 31 ) , max = Math . pow ( 2 , 31 ) - 1 ;
12
+ let rev = 0 ;
13
+ while ( x != 0 ) {
14
+ let pop = x % 10 ;
15
+ x = ( x - pop ) / 10 ;
16
+ if ( rev > max / 10 || ( rev == max / 10 && pop > 7 ) ) return 0 ;
17
+ if ( rev < min / 10 || ( rev == min / 10 && pop < - 8 ) ) return 0 ;
18
+ rev = rev * 10 + pop ;
33
19
}
34
- let a = x . toString ( ) ;
35
- let len = a . length , b = '' ;
36
- for ( let i = len - 1 ; i >= 0 ; i -- ) b += a [ i ] ;
37
- b = sign * Number ( b ) ;
38
- if ( b > max || b < min ) return 0 ;
39
- return b ;
20
+ return rev ;
40
21
} ;
22
+
41
23
/**
42
- * Second Way: 弹出和推入数字
24
+ * Author: rookie
43
25
*/
44
- let reverse = function ( x ) {
45
- let res = 0 ;
46
- while ( x !== 0 ) {
47
- res = res * 10 + x % 10 ;
48
- x = x < 0 ? Math . ceil ( x / 10 ) : Math . floor ( x / 10 ) ;
26
+
27
+ var reverse = function ( x ) {
28
+ const s = x + ""
29
+ let i = 0
30
+ let sign = 1
31
+ if ( s [ i ] == "-" ) {
32
+ i ++
33
+ sign = - 1
34
+ }
35
+ if ( s [ i ] == "+" ) {
36
+ i ++
37
+ }
38
+ let num = 0
39
+ for ( let j = s . length - 1 ; j >= i ; j -- ) {
40
+ num = num * 10 + parseInt ( s [ j ] )
41
+ }
42
+ num *= sign
43
+ let max = 2
44
+ for ( let n = 0 ; n < 30 ; n ++ ) {
45
+ max *= 2
46
+ }
47
+ if ( num > max || num < - max ) {
48
+ return 0
49
49
}
50
- return res < - ( 2 ** 31 ) || res > 2 ** 31 - 1 ? 0 : res ;
50
+ return num
51
51
} ;
0 commit comments