Given a 32-bit signed integer, reverse digits of an integer.
给定一个范围为 32 位 int 的整数,将其颠倒。
1 var reverse = function(x) { 2 var str, arr, num; 3 if (x > (Math.pow(2, 31) - 1) || x < -(Math.pow(2, 31))) { 4 return 0; 5 } 6 if (x >= 0) { 7 str = x + ""; 8 arr = str.split(‘‘); 9 arr = arr.reverse(); 10 str = arr.join(‘‘); 11 num = +str; 12 if (num > (Math.pow(2, 31) - 1)) { 13 return 0; 14 } else { 15 return +str; 16 } 17 } else { 18 x = -x; 19 str = x + ""; 20 arr = str.split(‘‘); 21 arr = arr.reverse(); 22 str = arr.join(‘‘); 23 num = -(+str); 24 if (num < -(Math.pow(2, 31))) { 25 return 0; 26 } else { 27 return -(+str); 28 } 29 } 30 };
该题对于javascript比较简单,给出的三个例子基本就把所有的难点都分别列出来了。
主要考虑几种情况。
- 超出32位Int整数,要返回0。
- 小于0的数字需要先将符号位提取,然后反转,然后再将符号加上。
- 末尾几位为0的,在反转之后,0就不存在了,所以要将末尾的0都去除。
- 反转之后的数组也要考虑其范围,如果反转之后超出32位Int整数,也需要返回0。