持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
整数反转
题目
7. 整数反转
难度中等
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入: x = 123
输出: 321
示例 2:
输入: x = -123
输出: -321
示例 3:
输入: x = 120
输出: 21
示例 4:
输入: x = 0
输出: 0
数学解决
这题其实很简单啊,感觉难度不应该是中等,而是简单难度。思路很简单。
每次取出整数的最后一位放在结果整数的末尾即可,那么我们就可以两个主要步骤解决
取末尾: %10 运算符能够得到末尾的整数(负数也是带有符号的哦! -123 %10 =-3),需要注意的是我们要将这个数除以十来将末尾数改变,而js的/不是整除,所以我们再/之后还需要取整。
改变结果整数: 将结果数*10就将所有位迁移一个单位,空出个位,再加上新的末尾数就可以了。
function reverse(x: number): number {
let n = x;
let res = 0;
while (n != 0) {
let a = n % 10;
n = ~~(n / 10); //n=parseInt(String(n / 10)) 也是一样的效果
// 为什么不用floor应该不用多说,Math.floor(-12.3)结果为-13,不符合预期的-12
//这里的~~两次取反达到取整的效果
res = res * 10 + a;
//结果数乘十加末尾数
}
if (res > Math.pow(2, 31) - 1 || res < -Math.pow(2, 31)) {
//判断结果数是否超出大小即可
return 0;
}
return res;
}
总结
本次文章的难点在于取反思路和取整处理,都不难,好好思考就能得出结果。
结语
本次的文章到这里就结束啦!♥♥♥读者大大们认为写的不错的话点个赞再走哦 ♥♥♥
每天一个知识点,每天都在进步!♥♥