7. Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
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 };