整数取出每位数字_每日一题2、整数反转

题目:

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

注意:

  • 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

示:

-231 <= x <= 231 - 1

解法一:

解题思路

  • result * 10 + x % 10 取出末位 x % 10(负数结果还是负数,无需关心正负),拼接到 result 中。

  • x / 10 去除末位,| 0 强制转换为32位有符号整数。

  • 通过 | 0 取整,无论正负,只移除小数点部分(正数向下取整,负数向上取整)。

  • result | 0 超过32位的整数转换结果不等于自身,可用作溢出判断。

运算过程:

xresult
1230
123
132
0321

代码:

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let result = 0;
    while(x !== 0) {
        result = result * 10 + x % 10;
        x = (x / 10) | 0;
    }
    return (result | 0) === result ? result : 0;
};

作者:zoffer
链接:https://leetcode-cn.com/problems/reverse-integer/solution/wei-yun-suan-ji-jian-jie-fa-by-ijzqardmbd/

解法二:

暴力法 转成字符串

代码:

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let now = Math.abs(x).toString().split("").reverse().join("");
    if(x < 0){
        return now <= Math.pow(2,31) ? -now : 0;
    }else{
        return now < Math.pow(2,31) ? now : 0;
    }
};

作者:lvshanke
链接:https://leetcode-cn.com/problems/reverse-integer/solution/zhi-xing-yong-shi-chao-guo-9617nei-cun-xiao-hao-ch/

结语:

书到用时方恨少,白首方悔读书迟。小伙伴们,算法在程序中的重要性不言而喻,而且,想摆脱初中级程序员的枷锁,算法是我们或多或少都要掌握的,可以不用做到精通,但是我们一定要熟知一些常见的算法

考虑到大多数的小伙伴并不会花大量的时间去刷枯燥乏味的算法题,这个专栏就每日为小伙伴们推送一道难度为简单的算法题,希望能在面试的时候祝大家一臂之力。

小伙伴们可以利用食堂排队、等公交、睡前甚至蹲厕所的十来分钟时间来阅读一下这里分享的每日一题,充分利用我们的闲鱼时间,去提升自己。我们都知道一直坚持做一件事的人是非常可怕,那就让我们一起成为这样的人,日积月累,滴水穿石,相信长此以往的小伙伴一定会有一个质的飞跃。

最后,既然选择了前端,便只顾风雨兼程,加油,前端小伙伴们!

The End

06005e7eff8cd005cd16a96325600cbf.png 前端应知应会

既然选择了前端,便只顾风雨兼程。

                              “在看”吗? 在看就点一下吧     eb68e573f20fee2a8c57dcc83be6c128.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值