整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

此题为leetcode上的第7题 ,题解链接在此:https://leetcode-cn.com/problems/reverse-integer/

说明:此题用JS有多种方法可以实现,但是!最优解是使用数学计算解决,使用转字符串,转数组的方式这里不提。

直接上代码:

 1 /**
 2  * @param {number} x
 3  * @return {number}
 4  */
 5 var reverse = function(x) {
 6     let current = 0
 7     let MAX_VALUE = Math.pow(2, 31) - 1
 8     let MIN_VALUE = Math.pow(-2,31)
 9     while(x !== 0){
10         let pop = x % 10
11         if(current > MAX_VALUE / 10 || (current === MAX_VALUE / 10 && pop > 7))
12             return 0
13         if(current < MIN_VALUE / 10 || (current === MIN_VALUE / 10 && pop < -8))
14             return 0
15         current = current * 10 + pop
16         x = parseInt(x / 10)
17         
18     }
19     return current
20 };

  具体思路,点击上方链接进入官方查看题解即可,这里只说明一点就是,因为javascript语言的特殊性,所有数字都属于Number类型,不会像C类语言,如C++,Java一样自动舍弃小数点后面的浮点数,将最后的结果转为整数。所以一定要使用全局对象中的parseInt()函数将结果转为整数,这样才能提交通过。注意:一定不要使用Math.floor()进行向下取整,因为当-123 / 10 向下取整时的结果是-13,不符合预期结果,遇到负数就会出错。

另外补充一个知识点:

正数模任意非0的数,结果都是正数,负数模任意非0的数,结果都是负数

每天打卡一个算法!第一天!

 

原文地址:https://www.cnblogs.com/cducz/p/11823433.html