7. Reverse Integer

7. Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

click to show spoilers.

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

 

 1 /**
 2  * @param {number} x
 3  * @return {number}
 4  */
 5 var reverse = function(x) {
 6     //翻转问题对于我而言直接想到的就是分治递归。
 7     
 8     //比如ABCD
 9     //先 CDAB
10     //在 CD 转成 DC  AB转成BA
11     
12 
13     
14   function innerReverse(x){
15      //处理负数
16     var flag = "";
17     
18     //先转成字符串
19     x  = "" + x;
20     
21     var len = x.length;
22     
23     if(len <= 1){
24         return x;
25     }
26     
27     //转成number判断正负
28     if(+x < 0){
29         flag = "-";
30         x = x.substring(1,len);
31     }
32     
33     var mid  =  Math.floor((len - 1) / 2);
34     
35        var pre = innerReverse(x.substring(mid+1,len));
36        var suf = innerReverse(x.substring(0,mid+1));
37     
38     
39       var res = flag ? "" + flag + pre + suf : ""+ pre + suf;
40       return res;
41     }
42 
43     
44     var res = +innerReverse(x);
45     //这题一开始没管越不越界,其实js是可以越界的,但是没办法,要兼容其它语言,所以我们不要超过int的最大位,当然这个问题我在开始就判断了,后来发现,其实一开始可以不超过的,但是反转了就超过了,所以要在结尾判断。
46     return Math.abs(res) > Math.pow(2, 31) - 1 ? 0 :res ;
47     
48 };

 

posted @ 2017-10-08 23:18  hdu胡恩超  阅读(158)  评论(0编辑  收藏  举报