Leetcode代码练习(五)

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比较简单,给出的三个例子基本就把所有的难点都分别列出来了。

主要考虑几种情况。

  1. 超出32位Int整数,要返回0。
  2. 小于0的数字需要先将符号位提取,然后反转,然后再将符号加上。
  3. 末尾几位为0的,在反转之后,0就不存在了,所以要将末尾的0都去除。
  4. 反转之后的数组也要考虑其范围,如果反转之后超出32位Int整数,也需要返回0。
posted @ 2018-03-26 21:25  闷闷不乐  阅读(130)  评论(0编辑  收藏  举报