题目:给出一个 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的数,结果都是负数
每天打卡一个算法!第一天!