05-整数反转(LeetCode)-简单

整数反转-题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意 : 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)

示例1:

输入: 123
输出: 321

示例2:

输入: -123
输出: -321

实例3:

输入: 120
输出: 21

题解:

1.使用API

var reverse = function(x) {
    let arr = x.toString().split('');
    let len = arr.length;
    let first = '';
    if(isNaN(arr[0])){ //防止数字是带符号的
        first = arr.shift();
    }
    while(arr[len-1] == 0){//防止末尾是0
        arr.pop();
    }
    let final = (first + arr.reverse().join(''))*1;
    return final >= Math.pow(-2,31) && final <= Math.pow(2,31) ? final : 0
};

 解题思路:

主要是对API的调用,先将数字转为字符串,再将字符串转为数组,反转数组并转换为数字,最终判断反转后的数字是否在给定区间内,如果在区间内直接返回,如果不在区间内返回0。

2.数学方法

var reverse = function(x) {
    let MAX = Math.pow(2,31);
    let MIN= Math.pow(-2,31);
    let isNegative = false; //判断是否为负数
    if(x < 0){
        isNegative = true;
        x = Math.abs(x); //转换为正数处理
    }
    let cur = '';
    while(x != 0){
        cur += x % 10;
        x = Math.floor(x/10)
        console.log(cur,x)
    }
    cur = isNegative ? cur * -1 : cur * 1;
    if(cur >= MAX || cur <= MIN){
        return 0;
    }else{
        return cur;
    }
};

 

 解题思路:

采用数学方法,用当前数%10取得最后一位数,将取出的值存入cur中,然后将当前数/10,向下取整去掉最后一位,直到传入的值变为0为止,此时证明已经反转完毕,判断反转后的数是否在给定的区间内,如果在返回反转得到的数,如果不在返回0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值